如何在Laravel URL参数中传递Id

Gok*_*han 9 php laravel

如何通过$val->idLaravel URL参数.我使用以下代码.它的返回错误

href="{{url('/dashboard/medicinepending/{{$val->id}}')}}"
Run Code Online (Sandbox Code Playgroud)

Ale*_*nin 23

试试这个:

{{ url('/dashboard/medicinepending/', [$val->id]) }}
Run Code Online (Sandbox Code Playgroud)

但是使用相对路径是个坏主意,因为如果您想要更改URL方案,则需要在视图和控制器中手动查找数十或数百个链接并手动更改它们.在这种情况下,你肯定会忘记更改其中的一些,你的应用程序的某些页面将被打破.

一个好的做法是使用链接路由:

{{ route('name.route', ['id' => $val->id]) }}
Run Code Online (Sandbox Code Playgroud)

或链接到行动:

{{ action('MyController@show', $val->id) }}
Run Code Online (Sandbox Code Playgroud)

  • @ash,这里没有人说“route”不使用“url”或其他东西。这根本不重要,你没有抓住重点。我是说使用硬编码 URL 是一个非常糟糕的主意。在真实的应用程序中,当您更改一个 URL 时,您将需要在整个应用程序中手动更改数十或数百个“url()”子句。在真实应用程序中使用硬编码 URL 是一种糟糕的做法。我不知道还能怎样向你解释这一点。 (3认同)

ash*_*ash 6

快速回答

如前所述,在刀片模板中构建URL的方法可以使用url帮助程序 ; 对于你的例子,这将工作:

{{ url('dashboard/medicinepending/', [$val->id] }}
Run Code Online (Sandbox Code Playgroud)

最佳实践

建议不要使用url,route甚至action建立您的观点的网址.这是因为URL不会改变,如果他们这样做,你应该有301重定向设置,以便你的SEO分数保持有效和良好.

所以简单地做一些事情:

<a href="/dashboard/medicinepending/{{ $val->id }}">
Run Code Online (Sandbox Code Playgroud)

但如果你真的想要使用包装器,那么url它是第二好的.

这些助手的唯一目的是用于电子邮件或命令artisan,当被解雇时,cron不知道URL中只有配置中定义的内容:app.url

说明

使用laravel构建URL的方法是在字符串前面加上app.urlconfig 的值; 发现:在config/app.php里面

这主要是针对CLI,当您运行cron进程并从带有链接的队列生成电子邮件时,这可以在您的应用程序中使用.否则根本不要使用它.

使用url帮助程序很好,因为您可以app.url通过自己的服务提供程序更改配置的值.当您拥有多种语言的网站和/或根据域名加载网站语言时,这非常有用; 例:

  • domain.com - 将加载美国网站
  • domain.uk - 将加载英国网站
  • domain.eu - 将加载一个通用的欧盟网站
  • domain.de - 将加载德国网站
  • domain.jp - 将加载日语网站
  • 等等

如前所述,您可以从路线构建网址; 这仅在您为路线命名并非总是如此时才有效.

{{ route('name.route', ['id' => $val->id] }}
Run Code Online (Sandbox Code Playgroud)

这将通过名称route.name找到路由,然后解析app('url')恰好是UrlGenerator的端点 - 所以这并不比url帮助器更好- 不要忘记命名所有路由 - 这很糟糕实践.

提到的另一种做法也不是一个好主意是action通过提供类和行动来寻找路线:

{{ action('MyController@show', $val->id) }}
Run Code Online (Sandbox Code Playgroud)

这是一个坏主意,除非MyController实际上是一个接口而不是物理类,因为你需要Inversion of Control来注入实现MyController的类,否则你的应用程序将不符合SOLID原则


vip*_*iya 5

尝试这个:

href="{{ URL('/dashboard/medicinepending/'.$val->id )}}"
Run Code Online (Sandbox Code Playgroud)