【问题标题】:Custom method instead of resource for Laravel routesLaravel 路由的自定义方法而不是资源
【发布时间】:2015-05-20 02:19:27
【问题描述】:

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

我经常遇到路由未定义错误,但它肯定是定义的...?

有什么想法会出错吗?

【问题讨论】:

  • 我希望修复它,但在放入 SO 时是一种类型。问题依然存在。

标签: php laravel laravel-4 laravel-routing


【解决方案1】:

laravel 辅助方法 link_to_route 生成一个 HTML 链接。这意味着当点击时,用户将执行GET 请求。

在您的路由文件中,您将其定义为POST 路由。

Route::post(...)

另外,请在此处查看link_to_route 的文档:

http://laravel.com/docs/4.2/helpers

您会看到第一个参数应该是只是路由名称,没有附加 ID。

【讨论】:

  • 本以为也是这样,但经过测试仍然没有运气。这应该在我眼中起作用......
  • @user2921557 然后更新您的帖子。修正错字,更新Route::post。准确显示您当前的代码。
  • 如果我直接访问 URL 可以正常工作,我会做更多的挖掘。
  • 超级。 =)所以我的回答实际上确实修复了路线。现在您需要检查您的 HTML 页面的来源,以查看 link_to_route 生成的链接是什么,以及为什么它与您直接访问该 url 时不一样。
  • 好的。我更新了我的答案,以显示如果您仍然需要,您可以如何使用 link_to_route。纯 HTML 也很好。很高兴能提供帮助。
【解决方案2】:

link_to_route 需要一个路由名称,而不是 URL。这就是您收到“未定义路由”错误的原因,因为您尚未使用您提供给link_to_route 的名称定义路由。如果你给你的路线命名,你可以使用link_to_route。

鉴于以下路线定义,路线名称现在是“close_ticket”:

Route::get('ticket/close_ticket/{id}', array('as' => 'close_ticket', 'uses' => 'TicketController@close_ticket'));

'as' 键的值是路由名称。这是link_to_route 中使用的值:

{{ link_to_route('close_ticket', 'Mark As Closed', array($ticket->id), array('class' => 'btn btn-success')) }}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-17
    • 2017-05-22
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    • 1970-01-01
    相关资源
    最近更新 更多