Laravel路由的自定义方法而不是资源

时间:2015-03-17 15:11:25

标签: php laravel laravel-4 laravel-routing

使用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')) }}

我经常得到一条未定义错误的路线,但肯定是定义了......?

任何出错的想法?​​

2 个答案:

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

相关问题