使用4.2并尝试向我的控制器添加自定义方法。
我的路线是:
Route::get('ticket/close_ticket/{id}', 'TicketController@close_ticket');
Route::resource('ticket', 'TicketController');
一切CRUD明智的工作原理应该如此,但在我的TicketController底部我有这个基本功能:
public function close_ticket($id) {
return "saved - closed";
}
当我在页面上显示路线链接时:
{{ link_to_route('ticket/close_ticket/'.$ticket->id, 'Mark As Closed', array($ticket->id), array('class' => 'btn btn-success')) }}
我经常得到一条未定义错误的路线,但肯定是定义了......?
任何出错的想法?
答案 0 :(得分:1)
link_to_route
需要路由名称,而不是网址。这就是为什么你得到未定义的路线'错误,因为您尚未使用提供给link_to_route
的名称定义路线。如果您为路线指定名称,则可以使用link_to_route
。
鉴于以下路线定义,路线的名称现在是' close_ticket':
Route::get('ticket/close_ticket/{id}', array('as' => 'close_ticket', 'uses' => 'TicketController@close_ticket'));
' as'的值key是路由名称。这是link_to_route
中使用的值:
{{ link_to_route('close_ticket', 'Mark As Closed', array($ticket->id), array('class' => 'btn btn-success')) }}
答案 1 :(得分:0)
laravel辅助方法link_to_route
生成HTML链接。这意味着点击后,用户将执行GET
请求。
在路线文件中,您将其定义为POST
路线。
Route::post(...)
另外,请在此处查看link_to_route
的文档:
http://laravel.com/docs/4.2/helpers
您会看到第一个参数应该只是路径名称,而不会附加ID。