2017-05-19 8 views
0

基本的には、コントローラーによって生成されたちょっとしたHTMLのチャンクを1つのメインビューに実装することです。問題は、ちょっとしたhtmlのカスタムスタイルが必要で、どこに(手動で)インクルードする必要があるのか​​わからないので、何とか関数を呼び出すファイルにcssを追加したいメソッドが呼び出されているときのコントローラ。 詳細な説明: 私のモデル(この場合はウィンドウ)の各インスタンスのいくつかのプロパティを表示するために、小さなカスタムパネルをプログラマチックに表示しています。私がリストしているメインビューにはたくさんのものがありますので、別のビューファイルを作成してパネルを作成し、それをコントローラ内の関数を介して返すことにしました。コントローラーメソッドを呼び出すビューのヘッダーにCSSファイルを含める

@foreach($order -> windows as $window) 
    {!!$window->drawPanel()!!} 
@endforeach 

はその後、私のウィンドウコントローラで、私は、ウィンドウが表示されているビュー返すメソッド持っていることのように(!違ったの性質上depedingを!):次のように だからhome.blade.phpに私が行います。

public function drawPanel() 
{ 
    return view('dogrami.windowPanelThumbnail', ['window' => $this]); 
} 

次に、windowPanelThumbnailファイルには、必要なhtmlが表示されています。問題は、私のパネルをビルドするために、ビルダービューには含めることができないcustom cssを使用します。これは100回も呼び出されるためです。 質問は、コントローラのメソッドを呼び出したファイルにスタイルを追加する方法です。 基本的に私は次のようにやってみたい:

public function drawPanel() 
{ 
    //$cssFile = pathToMyCssFile;//that's the instance containing my custom css 
    //$callingFile = ...//somehow retrieve an instance to the file that called that method.. in this case - the path to 'home.blade.php' 
    //if($calling.File already has the $cssFile included in it's header) 
     //don't do anything 
    //else 
     //$callingFile -> somehow include the $cssFile instance in the header 
    return view('dogrami.windowPanelThumbnail', ['window' => $this]); 
} 

それは私が求めているものですので、それが可能だ場合、私は見当がつかない。それを達成するための良いアイデアがあれば、本当に感謝しています。

+0

レイアウトファイルはありますか? –

+0

@AlexvanVlietレイアウトで私の唯一のアプリケーションファイルに固執しています、それはオプションです!ありがとう!しかし、私の質問は、私が尋ねたことを達成する方法についてですが、あなたはその思い出に私の問題を解決しました。私は、将来の使用のためにそれを必要とするかもしれないと私は説明されたようにできるようにしたいと思います。また、ヘッダーにプログラムでCSSファイルを含めるにはどうしたらいいですか?単にファイルに直接書き込むために 'File'ファサードを使うべきですか?私は小切手も必要だから。 –

+0

ビューを含めるか、それを返すか? –

答えて

0

あなたが動的にCSSを含めたい場合は、この方法でスタックhttps://laravel.com/docs/5.4/blade#stacksを使用することができます。

$links = ["all", "the", "links", "to", "css", "files"]; 
return view('yourview', [/*allyourdata, */, 'stylesheets' => $links]); 

そして、あなたが行うことができますあなたのビューで:

@push('stylesheets') 
    @foreach($stylesheets as $stylesheet) 
     <link rel="stylesheet" type="text/css" href="{{ $stylesheet }}"> 
    @endforeach 
@endpush 

そして、あなたの頭の中で@stack('stylesheets')を追加html

PS:スタックはlifoデータ構造(先入れ先出し方式)です。つまり、@pushを何回か実行すると最後に実行するのはb最初のものがエコーされた

+0

問題は、どのビューがメソッドを呼び出すのかを実際にはわかりません...そして、私のコントローラでは、メインビューも返さないのですが、パネルビルダービュー、私はCSSを追加する必要はありません。 –

+0

ああ、私はあなたの質問を本当に理解していない、私は今、私は一度私はそれをテストした私の答えを編集します –

関連する問題