【问题标题】:How to create a resource route in laravel如何在 laravel 中创建资源路由
【发布时间】:2014-02-19 23:05:54
【问题描述】:

我创建了一个名为 HomeController 的控制器及其名为

的方法
getIndex() 

index()

然后我做了一个路由如下

Route::resource('home', 'HomeController');

但它会给我这个错误

Controller method not found.

我在这条路线上工作得很好

Route::controller('/', 'IndexController');

请帮忙

更新
感谢你的帮助.. 我是laravel的初学者。所以我在路由中犯了一个大错误,我忘记了先进先出规则。所以我必须从

重新排序我的路线
Route::controller('/', 'IndexController'); 
Route::resource('homes', 'HomesController');

Route::resource('homes', 'HomesController');
Route::controller('/', 'IndexController'); 

【问题讨论】:

  • 如何称呼你的控制器? app.tld/home ?
  • @ManiacTwister localhost:82/home 将调用 HomeController
  • localhost:82/methodnamehere 的访问(GET 请求)将调用ControllerName@getMethodnamehere,而对localhost:82/methodnamehere 的POST 请求将调用ControllerName@postMethodnamehere

标签: php laravel laravel-4


【解决方案1】:

如果您使用资源控制器,则只需要“索引”方法。给定您的路线,您必须输入:yourdomain.com/home 才能访问 Home Controller 的索引。如果您想使用与主页相同的索引方法,则需要将其添加到您的路由文件中:

Route::get('/', 'HomeController@index');

另外,让(如果你还没有)运行:

composer dump-autoload

【讨论】:

    【解决方案2】:

    你也必须这样做:

    php artisan controller:make HomeController
    

    在您的终端中!

    【讨论】:

      【解决方案3】:

      如果您手动创建控制器,请检查您是否扩展了 BaseController 类。

      你可以安装https://github.com/JeffreyWay/Laravel-4-Generators

      Jeffrey Way 的 Laravel 命令行实用程序和一个命令:

      php artisan generate:resource
      

      您将生成完整的 REST-ful 资源 - 从路由到模型和控制器,甚至是迁移表。

      【讨论】:

      • 我相信你的意思是 php artisan generate:resource ResourceName 而不是 generate:migration 但是是的。 Jeffery Way 的生成器是 L4 开发的必须。我第一次真正使用generate:resource 我只是张开嘴巴:O ........
      • @carousel 感谢您提供的链接,这对我的开发有很大帮助
      • @carousel 也许你可以帮助我。看看这个:stackoverflow.com/questions/49594340/…
      【解决方案4】:

      要创建资源丰富的控制器,您应该从终端/命令提示符运行以下 artisan 命令

      php artisan controller:make HomeController
      

      这将在您的controllers 文件夹中创建一个资源丰富的控制器,如果您愿意,您可以提供一个路径作为命令的选项,例如

      php artisan controller:make HomeController --path="app/controllers/admin"
      

      它将使用7 方法创建一个资源丰富的控制器,并查看每个方法的路由映射,您可以从终端/命令提示符运行routes 命令,例如

      php artisan routes
      

      此命令将显示所有路由和操作/url 的表以及每个路由使用的名称,因此您可以在资源丰富的控制器中为每个操作/方法找到正确的 urlroute name

      如果您使用Route::controller('/', 'IndexController'); 声明路由,则必须手动创建IndexController,并且在此控制器(RESTfull)中,您可以使用http 动词(GETPOST 等)作为前缀创建方法喜欢

      public function getIndex()
      {
          //
      }
      

      对于此操作/方法,您的 url 将是 IndexController,它应该是来自地址栏的普通 GET 请求。

      要提交表单,您可以声明一个 post 方法,例如:

      public function postSave()
      {
          //
      }
      

      因此,您可以在表单中使用POST 方法向此操作/方法提交表单,并且表单的操作将是http://example.com/save,不带动词。您可以随时运行php artisan routes 命令来找出控制器方法/功能的url/route name。欲了解更多信息,请查看documentation

      【讨论】:

        【解决方案5】:

        您应该转到 Providers/RouteServiceProviders 并将此方法更改为:

            public function boot()
        {
            $this->configureRateLimiting();
        
            $this->routes(function () {
                Route::prefix('api')
                    ->middleware('api')
                    ->namespace($this->namespace)
                    ->group(base_path('routes/api.php'));
        
                Route::middleware('web')
        
                    **->namespace('App\Http\Controllers')**
        
                    ->group(base_path('routes/web.php'));
            });
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-12-26
          • 2015-11-19
          • 1970-01-01
          • 1970-01-01
          • 2014-06-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多