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

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

    AliihsanSuna slashları ters koymussun ve modelde belirtebilirsin
    php artisan make:controller Api/Admin/ProductController -m Model/User –-api

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

      Aşağıdaki şekilde dene bir hocam:
      php artisan make:controller Api/Admin/ProductController --api

      Option olarak verilen api değerinin başına 2 tane tire "-" işareti gelmeli, size tek tire işareti koymuşsunuz.

      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

      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ı.