根据路由组共享变量

时间:2014-05-19 12:09:42

标签: laravel laravel-4

我有2个版本的网站。一个位于站点的根URL中,一个使用路由前缀。它们使用相同的资源,但在从前缀路由访问时提供不同的链接:

Route::get('/', function(){
    View::share('outgoing_url','something.com');
    //regular links here
});

以及上面的一些指向不同的路线或

Route::group(array('prefix'=>'tour'), function(){
    View::share('outgoing_url','somethingelse.com');
    //different links here 
});

View :: share不起作用,因为它使用最后分配的内容,所以我试图找到解决此问题的方法。

此外,当我在通过前缀的视图中使用HTML :: link()时,一切仍然指向站点的根URI而不是“tour”前缀。有没有办法区分这两者?现在我遇到了这个问题,唯一的解决方案似乎是制作响应路由的视图和控制器的相同副本。但至少可以说这种做法似乎很愚蠢。

我希望我能理解这个问题。

2 个答案:

答案 0 :(得分:1)

HTML宏:

<?php

    HTML::macro('myLink', function($url, $title = null, $attributes = array(), $secure = null)
    {
        if (Request::segment(1) === 'tour')
        {
            $url = 'tour/'.$url;
        }

        return HTML::link($url, $title, $attributes, $secure);
    });

?>

用法:

HTML::myLink(...);

答案 1 :(得分:0)

只需使用之前的过滤器 - 并将其设置为

App::before(function($request)
{
    if (Request::segment(1) === 'tour')
    {
        View::share('outgoing_url','tour.com');
    }
    else
    {
        View::share('outgoing_url','other.com');
    }
});