• 15-02-2020, 20:40:06
    #1
    Merhabalar,

    Laravel ile geliştirilmiş bir projeyi düzenlemeye çalışıyorum, route'larla ilgili bir yerde tıkandım. Çok az laravel biliyorum, anladığım kadarıyla bir route'u sadece 1 grupta kullanabiliyorum. Birden fazla yere koyduğumda alttaki diğerini override ediyor. Ama bazı route'ları birden fazla kullanıcı tipine bağlamam gerekiyor. Bunu nasıl yapmam lazım?

    Route::group(['middleware' => ['admin']], function(){
    
        Route::resources([
            'test' => 'TestController',
            'test2' => 'TestController2',
        ]);
    ///diğer routelar
    });
    
    Route::group(['middleware' => ['user']], function(){
    
        Route::resources([
            'test' => 'TestController',
            'test2' => 'TestController2',
        ]);
       ///diğer routelar
    });
    Burada nasıl bir yol izlemem gerekiyor?
  • 15-02-2020, 20:50:57
    #2
    @SametALMDR;
  • 15-02-2020, 21:47:40
    #3
    mapacarta adlı üyeden alıntı: mesajı görüntüle
    Merhabalar,

    Laravel ile geliştirilmiş bir projeyi düzenlemeye çalışıyorum, route'larla ilgili bir yerde tıkandım. Çok az laravel biliyorum, anladığım kadarıyla bir route'u sadece 1 grupta kullanabiliyorum. Birden fazla yere koyduğumda alttaki diğerini override ediyor. Ama bazı route'ları birden fazla kullanıcı tipine bağlamam gerekiyor. Bunu nasıl yapmam lazım?

    Route::group(['middleware' => ['admin']], function(){
    
        Route::resources([
            'test' => 'TestController',
            'test2' => 'TestController2',
        ]);
    ///diğer routelar
    });
    
    Route::group(['middleware' => ['user']], function(){
    
        Route::resources([
            'test' => 'TestController',
            'test2' => 'TestController2',
        ]);
       ///diğer routelar
    });
    Burada nasıl bir yol izlemem gerekiyor?
    Bir route bir grupta kullanmak gibi dusunmeyin. grub olusturmussun ama prefix yok gruplarin. Bu durumda 2 tane /test ve 2 tane /test2 olusturmus oluyorsunuz. Eger route gruplarina prefix verirseniz; ornegin /admin ve /user gibi o zaman /admin/test ve /user/test gibi iki tane route olur. Tabii routelara farkli controller tanimlamaniz daha saglikli olur.
  • 15-02-2020, 22:33:36
    #4
    YILMAZ adlı üyeden alıntı: mesajı görüntüle
    Bir route bir grupta kullanmak gibi dusunmeyin. grub olusturmussun ama prefix yok gruplarin. Bu durumda 2 tane /test ve 2 tane /test2 olusturmus oluyorsunuz. Eger route gruplarina prefix verirseniz; ornegin /admin ve /user gibi o zaman /admin/test ve /user/test gibi iki tane route olur. Tabii routelara farkli controller tanimlamaniz daha saglikli olur.

    'admin/test' => 'TestController'

    gibi diyorsunuz sanırım. Ama bu seferde linkinde bu şekilde değişmesi gerekiyor. Aynı link olsa olmaz mı? Sitesindeki örnekte şöyle bir şey var:

    Route::middleware(['first', 'second'])->group(function () {
        Route::get('/', function () {
            // Uses first & second Middleware
        });
    
        Route::get('user/profile', function () {
            // Uses first & second Middleware
        });
    });
    Burda benim anladığım kadarıyla first ve second'ı aynı gruba ekliyoruz bu şekilde ama nedense bu da çalışmıyor. İkisini birden girince ikiside çalışmamaya başlıyor, tek bir tane girersem girdiğim çalışıyor. Bu route işi kafamı iyice karıştırdı


    EDIT: ben route mantığını biraz yanlış anlamışım, biraz daha düşününce sanırım nasıl işlediğini anladım. first, second kısmını ben kullanıcı tipleri zannediyordum halbuki bunlar route'un çalıştıracağı middleware fonksiyonlarıymış. Bu fonksiyonlara göre kullanıcı içeriğe erişebiliyor ya da engelleniyor. Bu mantığa göre tekrar düzenliycem bakalım ne çıkacak ortaya.
  • 15-02-2020, 23:09:03
    #5
    Eğer aynı route üzerinde kullanıcı rollerine göre başka şeyler göstermek istiyorsanız bir rol yönetim sistemi de düşünebilirsiniz. Permissionlarla bir view içinde farklı componentler gösterebilirsiniz.
  • 15-02-2020, 23:30:08
    #6
    mapacarta adlı üyeden alıntı: mesajı görüntüle
    'admin/test' => 'TestController'

    gibi diyorsunuz sanırım. Ama bu seferde linkinde bu şekilde değişmesi gerekiyor. Aynı link olsa olmaz mı? Sitesindeki örnekte şöyle bir şey var:

    Route::middleware(['first', 'second'])->group(function () {
    Route::get('/', function () {
    // Uses first & second Middleware
    });
    
    Route::get('user/profile', function () {
    // Uses first & second Middleware
    });
    });
    Burda benim anladığım kadarıyla first ve second'ı aynı gruba ekliyoruz bu şekilde ama nedense bu da çalışmıyor. İkisini birden girince ikiside çalışmamaya başlıyor, tek bir tane girersem girdiğim çalışıyor. Bu route işi kafamı iyice karıştırdı


    EDIT: ben route mantığını biraz yanlış anlamışım, biraz daha düşününce sanırım nasıl işlediğini anladım. first, second kısmını ben kullanıcı tipleri zannediyordum halbuki bunlar route'un çalıştıracağı middleware fonksiyonlarıymış. Bu fonksiyonlara göre kullanıcı içeriğe erişebiliyor ya da engelleniyor. Bu mantığa göre tekrar düzenliycem bakalım ne çıkacak ortaya.
    First ve second dediginz yer middleware hocam. Middleware, http isteginin Controllar ulasmadan onceki nokta gibi dusunebilirsiniz. Yetkilendirme, auth kontrol, log vb butun islemler icin kullanabilirsiniz.