【问题标题】:Controller Method not defined error - Laravel 5.1控制器方法未定义错误 - Laravel 5.1
【发布时间】:2015-08-28 12:07:27
【问题描述】:

我试图在我的主导航中显示当前登录的用户名,作为用户信息的链接。我可以获得要显示的名称,所以我从数据库中提取信息,并将其传递给视图 OK。但是,当我尝试将其设为链接时,我得到方法未定义错误。

这是我将用户信息传递给导航的方式(作为 var $userInfo):

public function index()
{
    $Clients = \Auth::user()->clients()->get();
    $userInfo = \Auth::user();
    return view('clients.index', compact('Clients', 'userInfo'));
}

这是我导航中的相关内容:

<ul class="nav navbar-nav">
  <li>{!! link_to_action('AuthController@show', $userInfo->username, [$userInfo->id]) !!}</li>
</ul>

我的控制器的方法:

    protected function show($id)
{
    $userInfo = User::findOrFail($id);
    return view('users.show', compact('userInfo'));
}

还有,路由定义:

// User Display routes
Route::get('auth/{id}', 'Auth\AuthController@show');

这是我得到的错误:

Action App\Http\Controllers\AuthController@show not defined. 

谁能告诉我我错过了什么?

【问题讨论】:

    标签: php laravel laravel-5 laravel-5.1


    【解决方案1】:

    首先,您需要将您的 AuthController::show() 方法设为 public:

    public function show($id)
    {
      $userInfo = User::findOrFail($id);
      return view('users.show', compact('userInfo'));
    }
    

    其次,由于您的控制器位于 App\Http\Controllers\Auth 命名空间中,因此您需要在视图中使用 **Auth** 前缀:

    <ul class="nav navbar-nav">
      <li>{!! link_to_action('Auth\AuthController@show', $userInfo->username, [$userInfo->id]) !!}</li>
    </ul>
    

    【讨论】:

    • 谢谢...但是,公开该方法并没有纠正错误。我得到与方法受保护时相同的响应。
    • 谢谢!这个答案纠正了这个错误。但是,当单击生成的链接时,由于某种原因,我被路由到 /home 而不是 /auth/{id}
    猜你喜欢
    • 2018-01-12
    • 2016-01-30
    • 1970-01-01
    • 2012-07-18
    • 2019-09-21
    • 2016-10-27
    • 2016-01-08
    • 2016-03-18
    • 2014-07-22
    相关资源
    最近更新 更多