2016-05-20 1 views
4

Я новичок в laravel в моей папке public/themes У меня есть две темы по умолчанию и оранжевые Я хочу пойти с оранжевым, но я не вижу, задано ключевое слово. Я пытаюсь изменить это в ThemeviewFinder.php, но это влияет только на представления, а не на активы. помогите мнеКак изменить название темы по умолчанию на все, что в laravel

public function setActiveTheme($theme) 
{ 

$users = DB::table('config') 
       ->select('activatedTheme') 
       ->where('id', 1) 
       ->get(); 
    //print_r($users); 
    foreach($users as $row){ 
     $theme = $row->activatedTheme; 

    } 
    $this->activeTheme = $theme; 
    array_unshift($this->paths, $this->basePath.'/'.$theme.'/views'); 
} 
+0

Пробовали ли вы что-нибудь до сих пор? Код, который вы пытались, должен появиться в вашем вопросе. –

+0

Я добавил @ J. Chomel –

+0

Поделитесь «глобальной» переменной с представлением View :: share ('assets_path', app ('assets_path')); содержащий путь к теме, который вы можете объявить в методе __construct в BaseContrlloer. –

ответ

0

Я смог достичь этого с помощью специального промежуточного программного обеспечения. В моем случае использования мне нужно было отобразить другой шаблон/тему на основе имени домена.

TemplateMiddleware.php

public function handle($request, Closure $next) 
{ 
    $paths = []; 
    $app = app(); 

    /* 
    * Pull our template from our site name 
    */ 
    $template = Template::where('domain', Request::server('SERVER_NAME'))->first(); 
    if($template) 
    { 
     $paths = [ 
      $app['config']['view.paths.templates'] . DIRECTORY_SEPARATOR . $template->tag 
     ]; 
    } 


    /* 
    * Default view path is ALWAYS last 
    */ 
    $paths[] = $app['config']['view.paths.default']; 

    /* 
    * Overwrite the view finder paths 
    */ 
    $finder = new FileViewFinder(app()['files'], $paths); 
    View::setFinder($finder); 

    return $next($request); 
} 

Kernel.php

protected $middleware = [ 
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, 
    \App\Http\Middleware\TemplateMiddleware::class, 
];