我的代码中的各个地方基本上都有这个:
{{ HTML::style('css/someFile.css') }}
以及:
{{ HTML::script('js/someFile.js') }}
现在,问题是我可能有其中的几个。我想要一种方法,我可以用一个“超级”函数覆盖所有这些,将所有CSS文件合并为一个,并将JS合并为一个。基本上,我想写自己的文件结合逻辑。
我如何进入“样式”和“脚本”函数,以便创建一个新的函数,将css和js打印成一个?我知道如何编写逻辑,但我需要知道如何覆盖这两个函数?
答案 0 :(得分:3)
您可以使用CodeSleeve/asset-pipeline。此软件包会自动将您的所有资产(css/js
)合并到一个文件中,并将代码minify
整合到一个文件中。
这意味着,浏览器只会发出一个请求,同时也可以减少文件的大小。
答案 1 :(得分:1)
我假设您要更改laravel HTML :: script& HTML :: style方法。你可以转到:
来做到这一点/app/vendor/laravel/framework/src/Illuminate/Html/HtmlBuilder.php
在此文件中指定了HTML构建器方法(样式,脚本,图像,链接等) 要修改脚本/样式方法,请向下滚动,直到看到:
/**
* Generate a link to a JavaScript file.
*
* @param string $url
* @param array $attributes
* @param bool $secure
* @return string
*/
public function script($url, $attributes = array(), $secure = null)
{
$attributes['src'] = $this->url->asset($url, $secure);
return '<script'.$this->attributes($attributes).'></script>'.PHP_EOL;
}
/**
* Generate a link to a CSS file.
*
* @param string $url
* @param array $attributes
* @param bool $secure
* @return string
*/
public function style($url, $attributes = array(), $secure = null)
{
$defaults = array('media' => 'all', 'type' => 'text/css', 'rel' => 'stylesheet');
$attributes = $attributes + $defaults;
$attributes['href'] = $this->url->asset($url, $secure);
return '<link'.$this->attributes($attributes).'>'.PHP_EOL;
}
正如您所看到的,这正是方法的作用。你说你知道如何编写逻辑,所以在这里你可以编辑它。
祝你好运!