laravel 5.3でsaas application
(ここではsaasはソフトウェアをサービスとして意味します)を構築しようとしています。私はViewServiceProvider
を拡張してビューフォルダの宛先を実装しようとしています。たとえば、2つの異なるドメインに2つのテーマがあります。今、私はそれがそれぞれのテーマのモジュールを表示する必要がありますように、これらのドメインのために動的にフォルダ構造を定義したいlaravelでランタイム中にビューフォルダの宛先を設定する方法
View
----| Theme One
--------| Navbar
--------| Sliders
--------| Tabs
--------| Parallax
--------| Iconbox
--------| template.blade.php
----| Theme Two
--------| Navbar
--------| Sliders
--------| Tabs
--------| Parallax
--------| Iconbox
--------| template.blade.php
:私は、このような何かを別のフォルダ内のビューでのHTMLコードのセットを持っています。私は、ナビゲーションバーのサブビューを含めたい場合は仮定のように、私はちょうど
@include('Navbar')
を記述する必要があり、それはそれぞれのテーマナビゲーションバーのフォルダまたはサブビューにアクセスする必要があります。私はViewServiceProvider
の延長だし、config/app.php
に、私はちょうどViewServiceProvider
をコメントアウトしていると私が作ったWebViewServiceProvider
を追加し、これを実現するために、それはここでは、目的地を設定していない私のコードは次のとおりです。
namespace Nitseditor\System\Providers;
use Illuminate\View\FileViewFinder;
use Illuminate\View\ViewServiceProvider;
use Nitseditor\System\Models\Domain;
class WebViewServiceProvider extends ViewServiceProvider
{
/**
* Register View Folder
*
* @return void
*/
public function registerViewFinder()
{
$this->app->bind('view.finder', function ($app) {
$paths = $app['config']['view.paths'];
$http_req = php_sapi_name() == 'cli' ? 'noetic.com' : $this->app['request']->server('HTTP_HOST');
$domainName = explode(":", $http_req)[0];
$domain = Domain::where('domain_name', $domainName)->first();
if($domain)
{
foreach ($domain->themes as $theme)
{
$paths = 'Nitseditor\System\Resources\Views\Themes\\' . $theme->theme_name;
}
}
return new FileViewFinder($app['files'], array(base_path($paths)));
});
}
}
マイ設定\ app.phpは、次のようになります。実行し、コントローラを介して確認しながら
// Illuminate\View\ViewServiceProvider::class,
Nitseditor\System\Providers\WebViewServiceProvider::class,
私は意見の宛先パスがデフォルトと同じです見ることができます
class DomainController extends Controller {
public function checkDomain()
{
$app = App::make('config');
dd($app);
}
}
編集
よく私は同じであることを起こる条件文なしで実行してみました。
public function registerViewFinder()
{
$this->app->bind('view.finder', function ($app) {
$paths = 'Nitseditor\System\Resources\Views\Themes\Themeone';
return new FileViewFinder($app['files'], array(base_path($paths)));
});
}
お手伝いします。
'if($ domain)'になっていることを確認できますか? – Ohgodwhy
@Ohgodwhyはいそうです。私は同じ方法でデータベース接続を設定しており、それは適切に起こっています。また、registerメソッドを使用するのではなく、 'webDatabaseServiceProvider'を起動メソッドで実行しました。私はブートメソッドで実装すれば実行すると思いますが、 'webViewServiceProvider'でエラーが発生します。 –
@Ohgodwhyよく条件付きのステートメントを使わずに '$ paths = 'Nitseditor \ System \ Resources \ Views \ Themes \ Themeone';を実行し、' return new FileViewFinder($ app ['files']、array(base_path ($ paths))); '同じように起こります。 –