1

saas applicationlaravel 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 フォルダーまたはサブビューにアクセスする必要があります。これを実装するために、私は拡張しViewServiceProviderconfig/app.phpViewServiceProviderます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)));
    });
}

これで私を助けてください。

4

1 に答える 1

0

さて、私はコードをダイダンプしようとし続け、$app配列をチェックしようとしました。私が試してみると、App::make::('config')laravelは構成ファイルから情報を収集し、動的構成が表示されていないアプリの構成配列を表示すると思います。

次に、ビューを確認してみました。

return view('template');

それは私が必要としていたブレードファイル/ビューを正確に表示しました。慌てないで

$app = App::make('config');
dd($app);

乾杯!!

于 2017-01-12T17:39:57.137 に答える