это мой код поставщика услуг:Laravel Layout доступа в поставщике услуг
<?php namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Event;
class LayoutVarsServiceProvider extends ServiceProvider {
public function register()
{
}
public function boot()
{
$route = Route::currentRouteAction();
$parts = explode("@" , $route);
Event::listen('Illuminate\Events\Dispatcher', function($event)
{
if($parts[0] = 'IndexController'){
switch($parts[1]) {
case 'getIndex':
$this->app->layout->container_class = 'homepage';
break;
case 'getHowworks':
$this->app->layout->container_class = 'how-does-it-work';
}
}
});
}
}
Я хочу, чтобы иметь возможность получить текущий контроллер или текущую схему, которая загружается в моем поставщике услуг с помощью Laravel событий Отправки я был в состоянии получить имя контроллера и имя acion от Laravel Face Route. но как получить доступ к макету ??? Я уже знаю, что все поставщики услуг расширяются. Поставщик услуг и класс поставщика услуг имеют свойство, называемое приложением, и таким образом у нас есть доступ к laravel IOC.
Решено.
после того, как все проблемы решены, но все же я не знаю, как получить доступ к экземпляру контроллера, который был отправлен. , и поскольку я прочитал исходный код контейнера и контроллера и поставщика услуг, это невозможно. возможно, я должен сам распространить контейнер laravel.
Можете ли вы рассказать о том, почему вы хотите сделать это, поскольку может быть более простой вариант?Я сделал это раньше в symfony2, но не похоже, что у вас много событий из жизненного цикла, чтобы работать в Laravel, чтобы захватить контроллер http://laravel.com/docs/4.2/lifecycle#application-events –
У меня так много страниц в моем проекте, и у моего макета есть div с идентификатором контейнера, и на каждой странице он имеет определенный класс, например, на странице контакта: «
», и я думаю, что это не очень хорошая работа, чтобы передать эти имена классов в каждом действии на всех контроллерах. Я хочу иметь случай переключения, чтобы установить класс контейнера по маршруту и контроллеру и действие, которое отправлено. – mhndevВ принципе, если бы я был вами, я бы просто сделал вспомогательную функцию, чтобы использовать в вашем представлении, чтобы найти контроллер/действие в файле конфигурации, получить значение и применить класс CSS. Это все еще кажется изворотливым, но ваша оригинальная идея - плохой путь. –