Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?

AliihsanSuna

  • 13 Haz 2020
  • 19 May 2020 tarihinde katıldı
  • 0 en iyi yanıt
  • Arkadaşlar öncelikle cevap veren herkese teşekkür ederim.
    Ben çift tire koyarak yazdım ama burada ki editör tek tire olarak göstermiş.
    Sorunun kaynağı laravel sürümüyle alakalı. 5.5 sürümünü 7.0 a yükselttim sorun kalmadı.

  • Slashlar doğru yönde. Ayrıca diğer şekliyle de denedim yine aynı hatayı verdi.

    • Arkadaşlar merhaba,
      komut satırından controller oluşturmak için yazdğım "php artisan make:controller Api\Admin\ProductController --api" bu komut sonucunda bu şekilde bir hata alıyorum :
      The "--api" option does not exist.
      Daha önce böyle bir sorunla karşılaşıp sorunu çözen oldu mu acaba ?
      Laravel sürümü son sürümdür.

      • codanux ve mgsmus bunu yanıtladı.
      • AliihsanSuna Bu özellik 5.6 ile geldi. php artisan --version ile Laravel sürümünüzü öğrenebilirsiniz.

        Eğer Laravel sürümünü güncelleme niyetiniz ya da imkanınız yoksa; API resource controller içerisinde resource controllerdan farklı olarak edit ve create yöntemleri yok sadece. Yani aslında bir tane resource controller oluşturup şu şekilde tanımlarsanız aynı şeyi yapmış oluyorsunuz:

        Route::resource('products', 'ProductController')->only([
            'index', 'show', 'store', 'update', 'destroy'
        ]);

        İsterseniz bir tane Route macro yazarak da polyfill yapabilirsiniz. \App\Providers\AppServiceProvider::boot() içerisine:

        Route::macro('apiResource', function ($name, $controller, array $options = []) {
            $only = ['index', 'show', 'store', 'update', 'destroy'];
        
            if (isset($options['except'])) {
                $only = array_diff($only, (array) $options['except']);
            }
        
            return $this->resource($name, $controller, array_merge([
                'only' => $only,
            ], $options));
        });

        Laravel 5.6+ daki gibi kullanabilirsiniz:

        Route::apiResource('products', 'ProductController')

        \Illuminate\Routing\Console\ControllerMakeCommand sınıfını genişleterek --api özelliğini make:controller komutuna da ekleyebilirsiniz ama o kadar ilerlemeye gerek olduğunu sanmıyorum. Resource controller oluşturup içinde edit ve create yöntemini silin gitsin.

        Ayrıca kullanılan terminal ve ortama göre escape değişebileceği için slash karakterinin en doğru kullanımı şudur:

        php artisan make:controller Api\\Admin\\ProductController --api