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

时间:2015-12-13 10:08:08

标签: php laravel laravel-5

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

3 个答案:

答案 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>