Как я могу переопределить функциональность функций laravel «script» и «style»?

#laravel #minify

#laravel #минимизировать

Вопрос:

В основном у меня это есть в разных местах моего кода:

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

А также:

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

Теперь проблема в том, что у меня может быть несколько из них. Мне нужен способ переопределить все это с помощью одной «супер» функции, которая объединит все файлы CSS в один и JS в один. В принципе, я хочу написать свой собственный файл, объединяющий логику.

Как бы я подключился к функциям «style» и «script», чтобы я мог создать новую функцию, которая печатает css и js как одно целое? Я знаю, как написать логику, но мне нужно знать, как переопределить эти две функции?

Комментарии:

1.Было бы что-то вроде grunt или gulp или пакета Laravel barryvdh/assetic github.com/barryvdh/laravel-assetic соответствует вашим потребностям?

Ответ №1:

Вы можете использовать CodeSleeve / asset-pipeline. Этот пакет автоматически объединит все ваши ресурсы ( css/js ) в один файл, а также minify код в один файл.

Это означает, что браузер выполнит только один запрос, а также размер файла также может быть уменьшен.

Ответ №2:

Я предполагаю, что вы хотите изменить метод laravel HTML::script amp; HTML::style. Вы можете сделать это, перейдя в:

 /app/vendor/laravel/framework/src/Illuminate/Html/HtmlBuilder.php
  

В этом файле указаны методы HTML builder (стиль, скрипт, изображение, ссылка и т.д.)
Чтобы изменить методы сценария / стиля, прокрутите вниз, пока не увидите:

 /**
 * 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;
}
  

Как вы можете видеть, это именно то, что делают методы. Вы сказали, что знаете, как написать логику, поэтому здесь вы можете ее отредактировать.

Удачи!

Комментарии:

1. Да, я могу переопределить их, но как? Как мне сказать Laravel, чтобы он запускал МОЮ функцию script вместо их?

2. Редактируя этот код, это код Laravel. Если вы отредактируете это, функции Laravels больше не будут работать, но они будут использовать ваши. Поместите свой код для script в метод script и свой код для style в метод style