从href中调用Controller不会返回任何结果(Laravel 5)


Call to Controller from a href returns nothing (Laravel 5)

我必须从我的网站登出用户。我在视图中有这个:

<a href="{{ URL::route('up_sessions.destroy') }}">Logout</a>

在routes.php中:

Route::resource('up_sessions','SessionsController');

SessionsController的destroy方法做了类似

的事情
session()->put('key', null);

,最后返回Redirect::to('Home');

当我点击'Logout'时,它将我发送到localhost:8000/up_sessions/%7Bup_sessions%7D什么也没发生。我期待返回"Home",这就是我需要的,点击注销,转到控制器,调用destroy方法,取消设置会话键,然后返回Home。我不明白为什么链接最后有这个片段%7Bup_sessions%7D…我没有办法解决这个问题,我也不知道如何摆脱它。不管怎样,我只需要点击注销,注销好了。

我做错了什么

要将路径指向愿望控制器方法,请使用

<a href="{{ action('SessionsController@destroy') }}">Logout</a>
<a href="{{URL::to('/up_sessions/destroy')}}">Logout</a>

您可以使用link_to_action helper来完成您想要的操作。例如:

{!! link_to_action('SessionsController@destroy','Log out',[pramameters,...,...]) !!}
 //pass parameter if you have it

然后在你的SessionController中,你处理它的工作方式

public function destroy($parameter...){
   //destroy session...
   return redirect('home');
}