我想在Route::resource()
控制器中使用自定义函数,就像public function check()
、public function login()
或public function laogout()
一样,但我的代码不起作用,如何使用自定义函数?
例如:
路线:
Route::resource('auth', 'AuthenticationController');
视图:
控制器:
public function check()
{
//
}
public function login()
{
//
}
public function logout()
{
//
}
我得到这个错误:
NotFoundHttpException in RouteCollection.php line 161:
首先,资源控制器应该用于生成Restful API,为应用程序提供CRUD接口,而不是用于登录和注销用户。
其次,不能使用Route::resource()添加其他控制器方法-此方法用于定义带前缀的方法集-请参阅http://laravel.com/docs/5.1/controllers#restful-有关详细信息,请参阅资源控制器。
如果你想将这些自定义操作添加到路由中,你需要在资源路由之前单独定义它们,例如:
Route::get('auth/check', 'AuthenticationController@check');
您可以在此处阅读有关定义自定义路线的更多信息:http://laravel.com/docs/5.1/routing
如果在路由资源中使用自定义函数,则需要用函数名称定义请求类型,如
Route::POST('auth/save-comment','authController@customFunctionName');
当然有可能
您可以在每个控制器中添加任意数量的方法,默认情况下,Larval会向资源控制器、方法和路由器添加一个凝乳,您需要执行以下操作才能在控制器中创建自己的模块化方法。
1) 首先在相应的控制器文件中公开添加您的方法
public function echoUser($id)
{
return $id;
}
2) 在路由器文件夹的web文件中,写入并命名路由器,例如:
Route :: get ('admin / echoUser / {id}', 'UserController @ echoUser') -> name ('admin.echoUser');
注意:添加此路由器后,您可以使用以下命令在已注册幼虫路由器列表中看到它
php artisan router: list
3) 现在您可以在刀片模板文件中使用来访问此方法,并将id轻松地传递给方法
<a class="btn btn-warning btn-sm" href="{{route('admin.echoUser', $user-> id)}} "> Show </a>
或
<form method="get" action="{{route('admin.echoUser' , $user->id)}}">
@csrf
<button type="submit" class="btn btn-primary btn-sm">show</button>
</form>