我現在在我的項目中實現主題。 我已經安裝了igaster/laravel-theme包。主題與包igaster
雖然我可以通過在配置/ themes.php更改默認主題切換主題,我不知道如何改變一個主題站點範圍 - 有這樣一個按鈕:
<a href="set_theme/2">change to 2</a>.
包的作者說我需要使用ServiceProvide。 我創建了一個。 現在...什麼?
編輯:解
基於由igaster提供的答案我把它工作的 - 部分。 這是什麼,我做了更詳細的描述:
在這個文件中: 應用/供應商/ themeSelectServiceProvider.php
<?php namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Session;
use Cookie;
use Request;
class themeSelectServiceProvider extends ServiceProvider {
public function register()
{
// for testing purpose I ignore the variable and hardcode the theme's name
// just in case I test both with and without backslash
// as the namespaces in L5 tends to be a major pain.
// neither one works.
$theme = Session::get('themeName');
// $theme = Request::cookie('themeName');
Session::put('theme', $theme);
if ($theme == 'Fawkes') {
\Theme::set('Fawkes');
}
if ($theme == 'Seldon') {
\Theme::set('Seldon');
}
else {\Theme::set('Fawkes');}
}
}
我已經註冊了服務提供商在我配置/應用程序。 PHP文件:
'providers' => [
...
'App\Providers\themeSelectServiceProvider',
在我的路線文件,我有這條航線:
Route :: get('set_theme/{themeName}','SitewideController @ set_theme2');
導致這裏:
use Response;
use Theme;
use Illuminate\Cookie\CookieJar;
class SitewideController extends Controller {
public function set_theme2($themeName)
{
\Theme::set('Seldon'); // I tested them one at a time to determine
Theme::set('Seldon'); // if there is a classname issue
if (Theme::find($themeName)) // Is $themeName valid?
{
return Redirect::to('/')->withCookie(cookie()->forever('themeName', $themeName));
// this is the only way I am able to create a cookie. Facade DOESN'T WORK!
}
Redirect::url('boooo'); // my error page
}
所以到現在爲止,我邁進了一步 - 在我的ServiceProvider以下行更改主題。
else {\Theme::set('Fawkes');}
其中仍然存在的問題:
中的ServiceProvider我不能讀既不存儲在會話也沒有任何cookie的任何值內。 只是用於測試目的,我創建了
Session::put('theme', $theme);
但Session變量從未創造 - 不是餅乾,不與會話。
請幫助如果可能的話
編輯2:
我試圖在的ServiceProvider把下面的代碼:
if(Auth::check()) {
\Theme::set('Seldon');
}
,但它會導致黑屏(我有調試=真) 。 在日誌文件中我看到:
local.ERROR: exception 'ReflectionException' with message 'Class hash does not exist'
Laravel 4是開發人員友好和驚人的。 Laravel 5已經在山頂上了。我想,L6將無法使用。
我向前邁進了一步。請檢查我編輯的問題。 看來我無法訪問ServiceProvider中的Session或Cookie。 感謝任何提示。 Thx – Peter 2015-03-13 10:56:01
安裝1.0.4後得到這個錯誤:local.ERROR:在D:\ www \!NiePozwalam \ vendor \ igaster \ laravel-theme \ src \ Themes中沒有找到消息'Theme'Fawkes'的異常'Exception'。 php:50 我恢復到1.0.3,問題消失了。 – Peter 2015-03-14 13:08:03
你應該在'themes.php'配置文件中加入'Fawkes'.... – igaster 2015-03-14 16:19:47