2014-09-10 4 views
1

У меня есть несколько vars в моем приложении, что я хотел бы поделиться с несколькими видами и запросами. В принципе у меня есть пользовательский макет, который я нагрузить так:Laravel - set variable глобально

@section('stylesheet') 
    {{ HTML::style(URL::to('custom_stylesheet/'.$slug)) }} 
@stop 

я как-то отправить «слизняка» вар к каждому запросу и действий и/или контроллер мне нужно, и мне нужно несколько. Это магазин с начальной страницы, чтобы проверить, последний шаг.

Как я могу это достичь? Is View :: share() решение или файл cookie?

Структура URL такова:

www.domain.tld/name/{client_slug}/{event_slug}/<all other variables> 

как/обзор или/или проверки/подробности/{} event_id

Спасибо!

ответ

2

Если вам необходимо указать точки зрения, использовать View Composer:

View::composer(['view-a', 'view-b'], function($view) 
{ 
    $client_slug = 'whatever you need to do to calculate the slug'; 

    $view->with('client_slug', $client_slug); 

    $view->with('event_slug', $event_slug); 

    $view->with('variable1', $variable1); 
}); 

Или, как вы сказали, View Share, чтобы поделиться с все из них:

View::share('client_slug', $client_slug); 

Вы можете создать файл для этой цели, что-то вроде app/composers.php и л Oad его в app/start/global.php:

require app_path().'/composers.php'; 

И вы можете рассмотреть вопрос об использовании Session вары тоже, который хранит данные через несколько запросов:

Session::put('client_slug', $client_slug); 

И получить его с

$client slug = Session::put('client_slug'); 

Но если это только View View, View Composers - это путь.

Использование сессии и View Composer их совмещены проста, вы можете установить в одном запросе:

Session::put('client_slug', $client_slug); 

И в следующем запросе вы можете отправить его своим видом:

View::composer(['view-a', 'view-b'], function($view) 
{ 
    if (Session::has('client_slug')) 
    { 
     $view->with('client_slug', Session::get('client_slug')); 
    } 
    else 
    { 
     $view->with('client_slug', 'default-slug-or-whatever-you-would-do'); 
    } 
}); 
+0

Попробуй это, спасибо! – Marek123

+0

Но как можно установить эти переменные? Могу ли я схватить их по просьбе фиста и сохранить их в композиторе? – Marek123

+0

Да. Отредактировано, чтобы показать, как это сделать. –

0

Я уверен, что вы можете сделать это:

if (Cache::has('slug')) 
{ 
    View::share('slug', Cache::get('slug');); 
} 

Тогда просто место, что в файле маршрута, или, возможно, ваш конструктор базового контроллера, где вы хотите его.

Затем, когда вы впервые дали Slug:

Cache::put('slug', $slug, 60); //60 minutes 
+0

, но это действителен через несколько запросов? – Marek123

+0

Нет - но вы можете просто кэшировать его? – Laurence