如何在 Laravel 的 Blade 模板中链接到一个宁静的资源?

Posted

技术标签:

【中文标题】如何在 Laravel 的 Blade 模板中链接到一个宁静的资源?【英文标题】:How to link to a restful Resource within a Blade template in Laravel? 【发布时间】:2014-10-29 02:51:39 【问题描述】:

我正在尝试找出从刀片模板中引用资源链接的“Laravel”方式。

上下文是我正在构建的 CRUD 管理面板。网址如下:

"list" camera resources:
  /admin/cameras

"show" a camera resource:
  /admin/cameras/12

这些工作正常。

我的路线.php

Route::resource('admin/cameras', 'MyAdmin\\Controllers\\CamerasController');

在“列表”操作的模板中,我尝试在每一行上添加一个链接,以转到该资源的“显示”操作。我当前在views/cameras/index.blade.php中的工作代码:

<span> link_to('/admin/cameras/'.$r['id'], $v); </span>

...其中 $r 是封闭循环中的“迭代器”。这自然会生成一个类似上面“show”的url。

似乎更简洁的方法是使用 link_to_route 或 link_to_action,但我都没有太多运气。根据我到目前为止所读到的内容,似乎不可能在资源上设置命名路由。上面的代码是最优的还是 Laravel 在这里提供了更优雅的东西?

注意:我见过一些类似的问题,但我的问题是特定于“资源”路线的。

【问题讨论】:

如果您查看laravel.com/docs/controllers#resource-controllers Laravel 将为您的资源分配路线名称。所以你的演出路线将类似于link_to_route('admin/cameras.show', $v, array('id' =&gt; $r['id'])) @JofryHS:啊,我错过了已经分配的名称。如果您作为答案发布,我将作为官方答案进行检查。谢谢! 另外一件事我也忘了提及,如果其中很少有人以/admin/ 开头,那么为您的路线添加前缀可能也是一个好习惯。 laravel.com/docs/routing#route-prefixing 享受编码。 :) 【参考方案1】:

你可以简单的状态

Route::[action]('admin/cameras',array('as' => 'name.route','uses' => function() ))

那么你就可以这样做了

link_to_route('name.route',$title,$paramerter=array(),$attirbutes=array()) 

【讨论】:

【参考方案2】:

如果您查看 laravel.com/docs/controllers#resource-controllers 资源丰富的路由会自动分配路由名称:

+-----------+---------------------------+---------+------------------+
|   Verb    |           Path            | Action  |    Route Name    |
+-----------+---------------------------+---------+------------------+
| GET       | /resource                 | index   | resource.index   |
| GET       | /resource/create          | create  | resource.create  |
| POST      | /resource                 | store   | resource.store   |
| GET       | /resource/resource      | show    | resource.show    |
| GET       | /resource/resource/edit | edit    | resource.edit    |
| PUT/PATCH | /resource/resource      | update  | resource.update  |
| DELETE    | /resource/resource      | destroy | resource.destroy |
+-----------+---------------------------+---------+------------------+

因此,如果您的资源名称是 admin/cameras,您只需将 resource 替换为 admin/cameras

并生成路由的链接:

link_to_route('admin/cameras.show', $v, array('id' => $r['id']))

【讨论】:

route('admin/cameras.show', array() 是你现在的做法

以上是关于如何在 Laravel 的 Blade 模板中链接到一个宁静的资源?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Blade 模板(Laravel v8)中获取 url 参数

如何在 laravel 4 的 Blade.php 模板中使用静态函数?

Laravel 5 - 所有模板中都可用的全局 Blade 视图变量

如何使用Laravel Blade模板呈现以下类型的表?

如何在 Laravel Blade 模板中添加 input type="number"?

如何在 Laravel Blade 模板中设置变量