saas application
laravel 5.3で(ここでのsaasはサービスとしてのソフトウェアを意味します)を構築しようとしています。を拡張してビューフォルダーの宛先を実装しようとしていますViewServiceProvider
。たとえば、2 つの異なるドメインに対して 2 つの異なるテーマを使用しています。次のようなさまざまなフォルダーのビューに一連の HTML コードがあります。
View
----| Theme One
--------| Navbar
--------| Sliders
--------| Tabs
--------| Parallax
--------| Iconbox
--------| template.blade.php
----| Theme Two
--------| Navbar
--------| Sliders
--------| Tabs
--------| Parallax
--------| Iconbox
--------| template.blade.php
ここで、これらのドメインのフォルダー構造を動的に定義して、それぞれのテーマのモジュールを表示する必要があります。Navbar のサブビューを含めたい場合は、次のように書くだけです。
@include('Navbar')
それぞれのテーマ 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)));
});
}
}
私のconfig\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)));
});
}
これで私を助けてください。