如何使用Blade多次包含相同的局部视图?

时间:2014-10-31 11:22:28

标签: laravel blade

我正在使用Laravel 4构建一个Web应用程序,我想为StackOverFlow中实现的标签选择构建一个自定义控件,我创建了一个包含CSS文件和JS文件的部分视图选择控件,我把它包含在我的视图中它工作得很好,问题是我必须在我的视图中使用两次相同的控件,一个用于标签,另一个用于活动,所以问题是如果我包含它两次,和JS文件加载两次! 我想像小部件一样使用它,我可以将它放在任何视图和同一视图中不止一次!

1 个答案:

答案 0 :(得分:0)

您可以使用Blade Partial视图制作 Widgets 。 但是,您不应在小部件部分视图中加载 .css .js 文件,因为正如您所说,它将加载文件不止一次。

如果您发现自己根据页面加载 .css .js 文件,则可以添加到 main-layout.blade.php (你的 标签的文件是这样的:

文件: main-layout.blade.php

<!DOCTYPE html>
<html>
<head>
@if(isset($loadOnHead)) <!-- Check if $loadOnHead is defined to avoid errors -->
@foreach($loadOnHead as $file)
   {{ $file }} <!-- Output all the files on the array -->
@endforeach
@endif
</head>
<body>

   <!-- * Your Site/App Content * -->

   <!-- Call the widget-css-js.blade.php file,
        note that the contents won't be loaded here.
    -->
   <!-- * Your Widget * -->
   @yield('widget') 

   <!-- * Your Widget Again * -->
   @yield('widget') 

   <footer>
      <!-- You can do another @foreach here for a $loadOnFooter
           array if you want to load scripts on footer 
           (you should load .js on footer).
        -->
   </footer>
</body>
</html>

|

文件: widget.blade.php

<!-- Your Widget HTML and Code goes here -->
* Your Widget Content *

|

控制器上的

控制器: ,当您使用小部件构建页面时(不是小部件本身),您应该:

public function MakeWidgetPage()
{
    //Add Scripts and CSS files to the Head
    $loadOnHead = array(

        HTML::script('js/app.min.js'),
        // Generates: <script src="http://your-app/js/app.min.js"></script>

        HTML::style('css/style.css'),
        // Generates: <link media="all" type="text/css" rel="stylesheet" href="http://your-app/css/style.css">

    );

    //Response
    return View::make('page-with-widgets')
        ->with('loadOnHead', $loadOnHead);
}

希望这可以帮助你:=

注意:此代码未经过测试,应该可行。如果您在向我的答案投票之前无法使其发挥作用,请提供任何评论。谢谢。