【发布时间】:2013-05-23 07:24:06
【问题描述】:
我是 Laravel 的新手,现在正在 L-4 上构建一个应用程序,但卡在了一个地方。无法理解如何生成相对于基本 url 的 url。在 laravel-3 我知道这可以通过
$url = URL::to('user/profile');
但是,在 L-4 中我们如何做到这一点..?
【问题讨论】:
我是 Laravel 的新手,现在正在 L-4 上构建一个应用程序,但卡在了一个地方。无法理解如何生成相对于基本 url 的 url。在 laravel-3 我知道这可以通过
$url = URL::to('user/profile');
但是,在 L-4 中我们如何做到这一点..?
【问题讨论】:
首先你需要创建一个命名路由,比如
说你想去http://baseurl/user并运行控制器'allusers'中定义的方法'showuser'
那么你的路线应该是这样的:-
Route::get('user', array('as' => 'myuser', 'uses' => 'allusers@showuser'));
现在您的 /user 网址将是
$myuserurl = URL::to('/myuser');
echo $myuserurl; // would be http://baseurl/user
我希望这对你有帮助。请参考http://laravel.com/docs/routing#named-routes
【讨论】:
URL::to('myuser');,因为它会调用路由的名称来确定链接到哪里而不是直接链接到路由?如果是URL::to('/myuser'),我相信路由应该是Route::get('/myuser', array('as' => 'myuser', 'uses' => 'allusers@showuser'));
要生成相对 URL,您可以使用URL::route 或URL::action,因为它们允许传递默认为true 的$absolute 参数。因此,例如,在使用命名路由时要获取相对 URL,您可以使用以下内容:
URL::route('foobar', array(), false)
这将生成一个类似/foobar 的网址。
【讨论】:
false 参数规定生成的路由是相对的。为清楚起见,生成的 URL 将是命名路由定义的 URL,不一定是 /foobar