【问题标题】:Generating url relative to the base url in laravel 4在laravel 4中生成相对于基本url的url
【发布时间】:2013-05-23 07:24:06
【问题描述】:

我是 Laravel 的新手,现在正在 L-4 上构建一个应用程序,但卡在了一个地方。无法理解如何生成相对于基本 url 的 url。在 laravel-3 我知道这可以通过

$url = URL::to('user/profile'); 

但是,在 L-4 中我们如何做到这一点..?

【问题讨论】:

    标签: php url laravel laravel-4


    【解决方案1】:

    首先你需要创建一个命名路由,比如

    说你想去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'));
    • 您可以在没有前导斜杠(/)的情况下定义Route,并且可以直接使用 URL::Route 来获取命名的Route URL as:- Route::get('myuser', array('as' => 'myuser', '使用' => 'allusers@showuser'));用法 -- URL::route('myuser', array())
    • 投反对票,因为答案具有误导性。 URL::to() 不会路由到命名路由,也不会生成相对 URL。
    • @sebt 我理解您希望提供帮助的愿望,但很遗憾我们无法接受您的编辑,因为该代码显然与作者所说的相冲突。为什么不将改进后的解决方案发布为您自己的答案呢?
    • @AndréDaniel 明白了。在匆忙提交编辑后,我意识到它与编辑的 SO 政策相冲突。不知道如何收回它,对不起。最后,我在 Holger Weis 的回答中添加了一条评论,该评论相当清楚地表明了正确的方法。
    【解决方案2】:

    要生成相对 URL,您可以使用URL::routeURL::action,因为它们允许传递默认为true$absolute 参数。因此,例如,在使用命名路由时要获取相对 URL,您可以使用以下内容:

    URL::route('foobar', array(), false)
    

    这将生成一个类似/foobar 的网址。

    【讨论】:

    • 这是最接近问题的正确答案。 URL::route() 生成一个命名路由的 URL,最后一个false 参数规定生成的路由是相对的。为清楚起见,生成的 URL 将是命名路由定义的 URL,不一定是 /foobar
    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 2010-09-12
    • 2021-05-07
    • 2019-03-10
    • 2014-11-13
    • 1970-01-01
    相关资源
    最近更新 更多