控制器方法未定义错误 - Laravel 5.1

时间:2015-07-26 12:14:57

标签: php laravel laravel-5 laravel-5.1

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

以下是我将用户信息传递给导航的方式(作为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. 

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

1 个答案:

答案 0 :(得分:1)

首先,您需要使 AuthController :: show()方法公开

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>