【问题标题】:Call route resource action from hyperlink从超链接调用路由资源操作
【发布时间】:2015-08-31 05:26:15
【问题描述】:

我在调用路由资源时遇到了这个常见问题。我需要从我的 href 链接的路由资源中调用操作 edit()。我的代码如下所示:

路线我有:

Route::resource('admin/settings/basic' , 'admin\settings\BasicController');

在我的 index.blade.php 我有:

<li><a href="{{ link_to_route('admin/settings/basic.edit') }}">Basic Settings</a></li>

它可能在我的链接中调用,link_to_route?似乎工作不正常。只有一种可行的方法是:

  <li><a href="{{ URL::to('admin/settings/basic/{basic}/edit') }}">Basic Settings</a></li> 

但是,当我使用它时,url 被破坏了:

http://test.dev/admin/settings/basic/%7Bbasic%7D/edit

我怎样才能像这样修复这个链接:

例如http://test.dev/admin/settings/basic/edit

【问题讨论】:

  • 我已经回答了这个问题。请让我知道这是否是您正在寻找的。​​span>
  • 您还有问题吗?

标签: laravel-5.1


【解决方案1】:

当你像这样声明一个路由资源时:

Route::resource('admin/settings/basic' , 'admin\settings\BasicController');

它创建以下路线: 注意编辑 URI(最后一行)。所以,使用路由资源编辑方法你必须像这样传递你的参数:

admin/settings/basic/{basic}/edit ,其中 {basic} 接受参数。

因此,遵循路由资源约定,您的编辑链接应生成以下内容:

http://test.dev/admin/settings/basic/1/edit

解决方案 [第 4 号]:

1) 在您的 route.php 中,您可以像这样定义资源路由:

Route::resource('admin/settings/basic' , 'admin\settings\BasicController');

2) 所以,你必须在这里创建 BasicController.php App\Http\Controllers\admin\settings\BasicController.php(如果你还没有这样做的话)

3) 你的edit.blade.php 应该放在

views/admin/settings/basic/edit.blade.php

4) 因此,不要在您的视图中使用 link_to_route。您可以使用如下路由功能:

<li><a href="{{ route('admin.settings.basic.edit', $user->id) }}">Basic Settings</a></li>

请注意,您必须传递一个 id 参数 ($user->id)。这将产生以下 URI:

http://test.dev/admin/settings/basic/1/edit

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-16
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多