• 23-05-2019, 17:36:52
    #1
    Laravelde appserviceprovider içinde menü logo vb değerleri çekiyorum boot fonksiyonu içinde fakat bu menülerin çoklu dil seçenekleri olduğu için
    sessionda tutulan dile göre sorgulama yapmak istiyorum appserviceprovider dosyasında
    Header.blade.phpdosyasına sessionu yazdırdım orada görebiliyorum ama sorgu yapabilmek adına AppserviceProvider dosyasın sessionu çekmek istiyorum ama bir türlü çekemedim
    AppserviceProvider dosyası
    if(Session::get('lang'){
    $dilid = Session::get('lang');
    }else{
    $varsayilandil = DB:: table('diller')->where('varsayilan', '1')->first();;
    $dilid = $varsayilandil->id;
    }
    
    $anamenu = DB::table('menu')->leftJoin('menu_aciklama', 'menu.id', '=', 'menu_aciklama.menu_id')
    ->where('menu_aciklama.dil','=',$dilid)
    ->where('menu.anamenu','=','1')
    ->where('menu.durum','=','1')
    ->where('menu.menu','=','0')
    ->select('menu.id','menu.sira','menu.durum','menu.menu','menu.anamenu','menu_aciklama.title','menu_aciklama.slug')
    ->orderBy('menu.sira','ASC')
    ->get();
    Lang isminde oluşturduğum middleware dosyası
    public function handle($request, Closure $next)
    {
    if($dil = Session::get('dil')){
    echo $dil;
    }
    return $next($request);
    }
    web.php dosyam yönlendirme
    Route::get('/lang/{id?}', array('as' =>'dil', 'uses' =>'ControllersThemeDilController@get_DilSec'));
    DilController Dosyası
         public function get_DilSec($dil){
    $diller = DB::table('diller')
    ->where('durum','=','1')
    ->where('id','=',$dil)
    ->first();
    if($diller){
    Session::put('dil',$diller->id);
    }else{
    echo "dil pasif";
    }
    return redirect()->back();
        }
  • 23-05-2019, 17:51:09
    #2
    Hocam selamlar,

    Bildiğim kadarıyla boot işlemi gerçekleşmeden session boş array döndürüyor providerda. Middleware'da bu işlemleri yapsanız biraz daha hoş olur gibime geliyor birde mutlak tavsiyem Eloquent ORM kulllanın laravelin en büyük nimetidir kendileri
  • 28-05-2019, 11:41:14
    #3
    Service Provider katmani Middleware'in bir alt katmani. Dolayisiyla henuz container olusurken Session'a burada erismen imkansiz. @Picpocket'in dedigi gibi. Middlerware olusturarak cozebilirsin bu sorunu.
  • 16-02-2020, 03:16:53
    #4
    Reveloper
    Geçmişten günümüze: hala çözümlenemeyen bir problem.. saat 12 den beri bunla uğraşıyorum.

    LoginController'de put ettiğim bir veriyi AppServiceProvider'da kullanamamak.. zulüm.
  • 17-02-2020, 03:01:59
    #5
    Yapmanız gereken şey aslında oldukça basit, model öğeleriniz için bir GlobalScope oluşturup hangi dile göre seçeceğinizi ilişkili modelde boot etmek. Dil neyse model verileri de otomatik olarak o şekilde gelecek. Ayrıca çoklu dil paketlerinden de faydalanabilirsiniz. Kullanışlı gördüğüm bir paket olarak aşağıdakini kullanabilirsiniz. Bu paket modeliniz için bir ek tablo oluşturup translateable olan alanları belirlemenizi sağlar ve veri çekerken GlobalScope'a ihtiyaç duymaksızın verileri bulunulan dilde çeker.

    https://github.com/Astrotomic/laravel-translatable
  • 23-02-2020, 10:52:50
    #6
    Reveloper
    MUluc adlı üyeden alıntı: mesajı görüntüle
    Yapmanız gereken şey aslında oldukça basit, model öğeleriniz için bir GlobalScope oluşturup hangi dile göre seçeceğinizi ilişkili modelde boot etmek. Dil neyse model verileri de otomatik olarak o şekilde gelecek. Ayrıca çoklu dil paketlerinden de faydalanabilirsiniz. Kullanışlı gördüğüm bir paket olarak aşağıdakini kullanabilirsiniz. Bu paket modeliniz için bir ek tablo oluşturup translateable olan alanları belirlemenizi sağlar ve veri çekerken GlobalScope'a ihtiyaç duymaksızın verileri bulunulan dilde çeker.

    https://github.com/Astrotomic/laravel-translatable
    Ancak şöyle bir durum var veritabanının adını session'da tutuyorum yani multi database login sistemim var.

    DB NAME
    Username
    Password

    şimdi bu adamdb yi seçinde config e set etmem lazım bunu. AppServiceProvider üzerinden:

    Config::set('database.connections.mysql.database', 'portakal_1023');
    Diye set ediyorum. Ancak session('db_name'); şeklinde db verisini okumam gerekiyor burada. Sorun orada başlıyor zaten.
  • 23-02-2020, 12:50:27
    #7
    Burti adlı üyeden alıntı: mesajı görüntüle
    Ancak şöyle bir durum var veritabanının adını session'da tutuyorum yani multi database login sistemim var.

    DB NAME
    Username
    Password

    şimdi bu adamdb yi seçinde config e set etmem lazım bunu. AppServiceProvider üzerinden:

    Config::set('database.connections.mysql.database', 'portakal_1023');
    Diye set ediyorum. Ancak session('db_name'); şeklinde db verisini okumam gerekiyor burada. Sorun orada başlıyor zaten.
    Projenizin detaylarını bilemiyorum tabii, neden multi database mesela? Dil için mi? Ayrıca main bir controller oluşturarak diğerlerini ondan extend edilmesiyle de bu sorun pekala çözülebilir gibi geliyor bana. Ya da middleware dosyasında da yapılabilir. Bir sürü çözüm yolu var.
  • 23-02-2020, 13:16:54
    #8
    Reveloper
    MUluc adlı üyeden alıntı: mesajı görüntüle
    Projenizin detaylarını bilemiyorum tabii, neden multi database mesela? Dil için mi? Ayrıca main bir controller oluşturarak diğerlerini ondan extend edilmesiyle de bu sorun pekala çözülebilir gibi geliyor bana. Ya da middleware dosyasında da yapılabilir. Bir sürü çözüm yolu var.
    Şöyle proje bir sipariş paneli herkesin Farklı db si var. Laravel 6 da denedim middleware ile yemedi sen nasıl bir yol izledin?
  • 23-02-2020, 17:43:25
    #9
    Burti adlı üyeden alıntı: mesajı görüntüle
    Şöyle proje bir sipariş paneli herkesin Farklı db si var. Laravel 6 da denedim middleware ile yemedi sen nasıl bir yol izledin?
    Hocam maalesef kafamda canlandıramadım. Sakıncası yoksa PM'den site adresi ile beraber detaylı anlatım yapar mısınız? Elimden bir şey geliyorsa yardımcı olmaya çalışırım.