【发布时间】:2015-01-15 22:13:42
【问题描述】:
当我有两条路由指向同一个操作时,我看到 Laravel 4 出现问题,一条在一个组中,一条在 routes.php 文件中“松散”。
<?php
// Routes.php
Route::group(array('domain' => '{subdomain}.domain.com'), function()
{
Route::get('profile/{id}/{name}', 'ProfileController@index');
});
Route::get('profile/{id}/{name}', 'ProfileController@index');
// Template.blade.php
<a href="{{ URL::action('ProfileController@index', array(123, 'JimSmith')) }}">Jim Smith</a>
模板链接到:currentsubdomain.domain.com/profile/%7Bid%7D/%7Bname%7D,而不是预期的将 ID 和名称分别交换为 123 和 JimSmith 的行为。
如果我注释掉第一条路线(组内的路线),代码将按预期工作。为什么添加这个额外的路由会破坏 URL 生成?有没有办法解决这个问题?我错过了什么明显的东西吗?
附:对于那些想知道为什么我在两个地方需要这条路线的人,我可以选择使用URL::action('ProfileController@index' array('subdomain' => 'james', 'id' => 123, 'name' => 'JimSmith'); 生成带有子域的url
【问题讨论】:
-
我不太清楚为什么,但您可以使用命名路由作为替代方案。
Route::get('profile/{id}/{name}', array('as' => 'yourname', 'uses' => 'YourController@method'));然后在您的模板中您可以使用{{ route('yourname') }}来输出 URL。你可以像往常一样将额外的参数传递给路由:laravel.com/docs/4.2/helpers#urls -
如果你注释掉 second 路由而只留下第一个会发生什么?它仍然不起作用吗?换句话说,是 both 导致了问题,还是 第一个 导致了问题?
标签: php laravel laravel-4 laravel-routing