Laravel在Resource::Controller中使用自定义函数


Laravel use custom functions in Resource::Controller

我想在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>