!!YARDIM...Laravel Route Yardım - R10.net
  • 11-09-2020, 13:25:40
    #1
    Arkadaşlar laravel öğreniyorum route yapısına bakarken şu şekilde route oluşturuyorum
    Route::get('/anasayfa','App@index');
    ve app adında bir controllerım var
    <?phpnamespace AppHttpControllers;
    use IlluminateHttpRequest;
    class App extends Controller{
      
        public function index(){        return "anasayfa";    }
        public function hakkimizda(){    return "hakkimizda";            }
    }
    şu şekilde bir hata veriyor
    Call to undefined method IlluminateSupportFacadesApp::index()
    ohhh be
  • 11-09-2020, 14:01:08
    #2
    AppController olarak düzeltin controller sinifinizin ismini laravelde zaten App seklinde bir sinif var
    WP​​​​
  • 11-09-2020, 16:59:56
    #3
    App diye controller olmaz hocam, Laravel yazım standartlarını takip edin. App sınıfı laravelin kendi sınıfıdır ve varsayılan olarak gelir. Controller oluştururken ya da generate ederken sınıfınızın adının sonuna Controller gelmesine dikkat edin. Mesela Model generate ederken sözgelimi Product isminde generate edin, controlleri ise ProductController olsun. Bununla product controllerinin içine Product modelini çekerseniz kazalara uğramamanız hedeflenmiştir. Yazım standartları hayat kurtarır.
  • 11-09-2020, 17:13:57
    #4
    MUluc adlı üyeden alıntı
    App diye controller olmaz hocam, Laravel yazım standartlarını takip edin. App sınıfı laravelin kendi sınıfıdır ve varsayılan olarak gelir. Controller oluştururken ya da generate ederken sınıfınızın adının sonuna Controller gelmesine dikkat edin. Mesela Model generate ederken sözgelimi Product isminde generate edin, controlleri ise ProductController olsun. Bununla product controllerinin içine Product modelini çekerseniz kazalara uğramamanız hedeflenmiştir. Yazım standartları hayat kurtarır.
    hocam anasayfa yaptım controller ismini bu seferde şu hatayı aldım
    IlluminateContractsContainerBindingResolutionExcep tionTarget class [Anasayfa] does not exist.

    <?phpnamespace AppHttpControllers;
    use IlluminateHttpRequest;
    class Anasayfa extends Controller{
    public function index(){
    return "merhaba";
    }}
    Route::get('/anasayfa','Anasayfa@index');
    Route::get('/iletisim','Ornek@iletisim');
    ohhh be
  • 12-09-2020, 00:58:38
    #5
    zeytin8899 adlı üyeden alıntı
    hocam anasayfa yaptım controller ismini bu seferde şu hatayı aldım
    IlluminateContractsContainerBindingResolutionExcep tionTarget class [Anasayfa] does not exist.

    <?phpnamespace AppHttpControllers;
    use IlluminateHttpRequest;
    class Anasayfa extends Controller{
    public function index(){
    return "merhaba";
    }}
    Route::get('/anasayfa','Anasayfa@index');
    Route::get('/iletisim','Ornek@iletisim');
    Size Controllerlarınızın sonunda Controller ibaresi bulunsun dedim, zor bir şey değil ki, php artisan make:controller IndexController yazacaksınız.

    İsimlendirmelerinizi Türkçe yapmayın. Programlama Türkçe yapılmaz. İkincisi r10'daki php kodlardan mı kaynaklıdır bilemedim, namespace ve use classlarınız en azından burada hatalı görünüyor, doğrusu şu şekilde olacak:

       <?php
    namespace App\Http\Controllers;
    use Illuminate\Http\Request;
  • 12-09-2020, 22:04:36
    #6
    Eger Laravel 8 kullaniyorsaniz, ki aldiginiz hatadan Laravel 8 kullandiginiza eminim. Artik "Controller@method" seklinde string olarak rotalarinizi belirleseniz dahi yine namespace'in tamamini belirtmelisiniz. Full Namespace belirtmeniz ve array syntax kullanmalisiniz.

    Örnek:

    <?php
    
    use Illuminate\Support\Facades\Route;
    use App\Http\Controllers;
    
    Route::get('/', [Controllers\App::class, 'index']);
    GitHub​​​​
  • 12-09-2020, 22:07:07
    #7
    Remzi0068 adlı üyeden alıntı
    Eger Laravel 8 kullaniyorsaniz, ki aldiginiz hatadan Laravel 8 kullandiginiza eminim. Artik "Controller@method" seklinde string olarak rotalarinizi belirleseniz dahi yine namespace'in tamamini belirtmelisiniz. Full Namespace belirtmeniz ve array syntax kullanmalisiniz.

    Örnek:

    <?php
    
    use Illuminate\Support\Facades\Route;
    use App\Http\Controllers;
    
    Route::get('/', [Controllers\App::class, 'index']);
    Hocam boyle devamli degismesi sacma degil mi?
    ohhh be
  • 12-09-2020, 22:15:42
    #8
    Ben zaten önceden'de Default Namespace'i kaldiriyordum. PHPStorm gibi IDE'lerde Refactor etmesi daha kolay oluyor, özellikle büyük Projelerde. Eger eski sekil kullanmak isterseniz asagida yazdigim degisiklikleri yaparak yine "App@index" seklinde kullanabilirsiniz.

    app/Providers/RouteServiceProvider.php dosyasini acin.

    Su kod blogunu bulun:

    Route::middleware('web')
    ->group(base_path('routes/web.php'));
    Sununla degistirin:

    Route::middleware('web')
    ->namespace('App\Http\Controllers')
                    ->group(base_path('routes/web.php'));
    Böylece eski sekil kullanmaya devam edebilirsiniz.
    GitHub​​​​
  • 17-09-2020, 23:31:00
    #9
    BackenDeveloper adlı üyeden alıntı
    AppController olarak düzeltin controller sinifinizin ismini laravelde zaten App seklinde bir sinif var
    Namespaceler bu sorunu cozmek icin var zarten. Projenin bir yerinde App adinda class var diye artik hic zaman App adinda baska class olamaz diye bir yaklasim yok.