是否有可能减少laravel4中的路线

时间:2015-10-03 09:31:13

标签: laravel laravel-4

我想知道是否有可能减少laravel4中同一控制器的路由。

这是我的路线:

Route::get('emp/add-employee/','EmpController@addEmployee');

Route::post('emp/add-employee/','EmpController@addEmployee');

Route::get('emp/edit-employee/{id}','EmpController@editEmployee');

Route::post('emp/edit-employee/{id}','EmpController@editEmployee');

Route::get('emp/view-employee/{id}','EmpController@viewEmployee');

有没有可以减少......?

3 个答案:

答案 0 :(得分:5)

您的路线操作看起来就像您在RESTful Resource Controller中找到的路线操作。所以你可以用这个:

Route::resource('emp', 'EmpController', array('only' => array('create', 'store', 'edit', 'update', 'show')));

这当然要求您相应地重命名控制器方法,并且路径路径会略有不同,但您具有更紧凑的路径定义和一致的命名。以下是上面Route::resource定义生成的路由。

+-----------------------------+---------------+-------------------------+
| GET  emp/create             | emp.create    | EmpController@create    |
| POST emp                    | emp.store     | EmpController@store     |
| GET  emp/{id}               | emp.show      | EmpController@show      |
| GET  emp/{id}/edit          | emp.edit      | EmpController@edit      |
| PUT  emp/{id}               | emp.update    | EmpController@update    |
+-----------------------------+---------------+-------------------------+

因此您必须重命名控制器方法名称,如下所示:

GET : addEmployee()  -> create() // shows the add form
POST: addEmployee()  -> store()  // processes the add form when submitted
GET : editEmployee() -> edit()   // shows the edit form
POST: editEmployee() -> update() // processes the edit form when submitted
GET : viewEmployee() -> show()

答案 1 :(得分:2)

您可以使用控制器路线。

Route::controller('emp', 'EmpController');

现在您只需重命名控制器中的函数,以表示使用的方法,如下所示:

public function getAddEmloyee()
public function postAddEmloyee()
public function getEditEmployee($id)
etc. 

另请参阅Laravel docs for controllers

答案 2 :(得分:1)

是的,请使用Route::match()。这样您就可以在单个路由调用中指定GETPOST,如下所示:

Route::match(['GET', 'POST'], 'emp/edit-employee/{id}','EmpController@editEmployee');

您还可以使用Route::all()来匹配任何类型请求,其中包括GETPOST以及可能指定的任何其他HTTP谓词,如果这是您想要的。< / p>