我正在使用Laravel 4构建一个Web应用程序,我想为StackOverFlow中实现的标签选择构建一个自定义控件,我创建了一个包含CSS文件和JS文件的部分视图选择控件,我把它包含在我的视图中它工作得很好,问题是我必须在我的视图中使用两次相同的控件,一个用于标签,另一个用于活动,所以问题是如果我包含它两次,和JS文件加载两次! 我想像小部件一样使用它,我可以将它放在任何视图和同一视图中不止一次!
答案 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);
}
希望这可以帮助你:=
注意:此代码未经过测试,应该可行。如果您在向我的答案投票之前无法使其发挥作用,请提供任何评论。谢谢。