我想在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:
答案 0 :(得分:0)
如果在路径资源中使用自定义函数,则需要使用函数名称定义请求类型,如此
Route::POST('auth/save-comment','authController@customFunctionName');
答案 1 :(得分:0)
首先,资源控制器应该用于生成Restful API,为您的应用程序提供CRUD接口 - 而不是用于登录和退出用户。
其次,您无法使用 Route :: resource()添加其他控制器方法 - 此方法用于定义前缀方法集 - 有关详细信息,请参阅http://laravel.com/docs/5.1/controllers#restful-resource-controllers。
如果要将这些自定义操作添加到路由中,则需要在资源路由之前单独定义它们,例如:
Item
您可以在此处详细了解如何定义自定义路线:http://laravel.com/docs/5.1/routing
答案 2 :(得分:0)
当然可以
您可以在每个控制器中添加任意数量的方法,默认情况下,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>
OR
<form method="get" action="{{route('admin.echoUser' , $user->id)}}">
@csrf
<button type="submit" class="btn btn-primary btn-sm">show</button>
</form>