如何覆盖laravel"脚本"的功能?和"风格"功能?

时间:2014-07-01 16:24:34

标签: laravel minify

我的代码中的各个地方基本上都有这个:

{{ HTML::style('css/someFile.css') }}

以及:

{{ HTML::script('js/someFile.js') }}

现在,问题是我可能有其中的几个。我想要一种方法,我可以用一个“超级”函数覆盖所有这些,将所有CSS文件合并为一个,并将JS合并为一个。基本上,我想写自己的文件结合逻辑。

我如何进入“样式”和“脚本”函数,以便创建一个新的函数,将css和js打印成一个?我知道如何编写逻辑,但我需要知道如何覆盖这两个函数?

2 个答案:

答案 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;
}

正如您所看到的,这正是方法的作用。你说你知道如何编写逻辑,所以在这里你可以编辑它。

祝你好运!