laravel 4:Route类中资源和控制器之间的区别

时间:2014-06-12 07:51:18

标签: laravel laravel-4 laravel-routing

静态路由方法和#34;资源"之间的区别是什么?和"控制器"

Route::controller()

Route::resource()

感谢,

4 个答案:

答案 0 :(得分:6)

我得到了一些东西:

Route::resource()
  • 强制您使用默认方法(索引,创建,存储,显示,编辑,更新,销毁),无法在控制器类中添加新方法(无法调用新方法)

Route::controller()
  • 让您在控制器类
  • 中定义无限制的方法
  • 需要在函数名之前定义使用过的HTTP谓词,如(postCreate,anyCreate)

答案 1 :(得分:1)

您可以在官方文档中阅读此内容:

http://laravel.com/docs/controllers#restful-controllers

 Route::controller()

它将声明您定义的所有路由作为从html谓词开始的函数,例如文档:

Route::controller('users', 'UserController');

  class UserController extends BaseController {

  public function getIndex()
  {
    //
  }

  public function postProfile()
  {
    //
  }

  public function anyLogin()
  {
    //
  }

}

另一方面:

http://laravel.com/docs/controllers#resource-controllers

Route::resource()

基本上在使用artisan的create controller命令时使用:

php artisan controller:make PhotoController

它将生成artisan命令生成的所有路由,基本上是crud routes。

希望它对你有所帮助。

答案 2 :(得分:1)

以下是执行这两项操作时发生的路由:

Route::controller('test', 'TestController');
Route::resource('othertest', 'OtherTestController');

这是一张我即将为您撰写文章的图片,如果它更容易: "php artisan routes" result of the above routes

以下是一体化。例如,如果您GETlaravel_dir/test/page,它会在getPage()中查找方法TestController。如果您POSTlaravel_dir/test/page,它会查找postPage()

  

URI :GET | HEAD | POST | PUT | PATCH | DELETE test / {_ missing}

     

路线名称:无

     

操作:TestController @ missingMethod

以下是资源路由的结果......您将看到它对于routes.php文件的一行中的CRUD非常有用。

  

URI :GET | HEAD othertest

     

路线名称:othertest.index

     

动作:OtherTestController @ index

     
     

URI :GET | HEAD othertest / create

     

路线名称:othertest.create

     

动作:OtherTestController @ create

     
     

URI :POST othertest

     

路线名称:othertest.store

     

操作:OtherTestController @ store

     
     

URI :GET | HEAD othertest / {othertest}

     

路线名称:othertest.show

     

动作:OtherTestController @ show

     
     

URI :GET | HEAD othertest / {othertest} / edit

     

路线名称:othertest.edit

     

操作:OtherTestController @ edit

     
     

URI :PUT othertest / {othertest}

     

路线名称:othertest.update

     

操作:OtherTestController @ update

     
     

URI :PATCH othertest / {othertest}

     

路线名称:othertest.update(与上面共享名称)

     

操作:OtherTestController @ update

     
     

URI :DELETE othertest / {othertest}

     

路线名称:othertest.destroy

     

动作:OtherTestController @ destroy

答案 3 :(得分:0)

此方法自动检测“GET”,“POST”,“PUT / PATCH”,“DELETE”方法。

Route::resource()

此方法自动检测来自URL的参数

Route::controller()

另见:Laravel 4 : Route to localhost/controller/action