см. Компиляция активов (Laravel Mix) https://laravel.com/docs/5.4/mix mix.js(['resources/assets/js/app.js'], 'public/js') .sass('resources/assets/sass/app.scss', 'public/css') .styles([ 'node_modules/animate.css/animate.css', 'node_modules/icheck/skins/flat/green.css', 'node_modules/flatpickr/dist/flatpickr.css'."}}}
Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Включение ресурсов в представление лезвия пакета - Laravel

Автор вопроса: Parth VoraОтветов: 2

Я создаю пакет с использованием Laravel 5.4. Мне нужно включить некоторые ресурсы (js, CSS и изображения) в шаблон лезвия. Как я могу этого добиться?

Я пробовал asset (), но он не работает.

Вот структура папок моего пакета:

root
  --package
     -- vendor_name
        -- package_name
           -- src
              -- assets
                 -- js
                    -- login.js
                 --css
                    -- login.css
              -- views
                 -- login.blade.php

Возможно ли это без публикации в общей папке?

Спасибо

  • asset() предоставляет путь к общедоступному каталогу вашего проекта laravel. Кажется, ваши файлы находятся в каталоге поставщика. Это правильно? Sapnesh Naik 10.05.2017
  • Это невозможно так, как вы. Браузер попытается загрузить ссылки CSS и источники Javascript с помощью HTTP-запросов, и единственная папка, открытая для HTTP-запросов для Laravel, - это общая папка. Поскольку вы говорите о пакете, а многие установки следуют передовым практикам, вы должны переместить их в общую папку, как уже предлагают ответы. Hilmi Erdem KEREN 11.05.2017

laravelblade

Ответы

Ответ 1 · рейтинг 2 · Mohammed Zaki

В Laravel 5.4 вы можете использовать функцию смешивания, гораздо лучше, если вы хотите использовать версии

<script src="{{ mix('js/login.js') }}"></script>

см. Компиляция активов (Laravel Mix)

https://laravel.com/docs/5.4/mix

mix.js(['resources/assets/js/app.js'], 'public/js')
        .sass('resources/assets/sass/app.scss', 'public/css')
        .styles([
            'node_modules/animate.css/animate.css',
            'node_modules/icheck/skins/flat/green.css',
            'node_modules/flatpickr/dist/flatpickr.css',
            'node_modules/gentelella/vendors/switchery/dist/switchery.min.css',
            'node_modules/ion-rangeslider/css/ion.rangeSlider.css',
            'node_modules/ion-rangeslider/css/ion.rangeSlider.skinFlat.css',
            'node_modules/gentelella/vendors/google-code-prettify/bin/prettify.min.css',
            //bootstrap modal carousel.js
            //'node_module/bootstrap-modal-carousel/dist/css/bootstrap-modal-carousel.css',
            'node_modules/gentelella/build/css/custom.css',
            'resources/assets/css/custom.css'
        ], 'public/css/custom.css')
        .copy('node_modules/gentelella/vendors/switchery/dist/switchery.min.js', 'public/js/switchery.min.js')
        .copy('node_modules/gentelella/vendors/switchery/dist/switchery.min.css', 'public/css/switchery.min.css')
        .copy('resources/assets/images', 'public/images')
        .copy('node_modules/ion-rangeslider/img', 'public/img')
        .copy('node_modules/icheck/skins/flat/green.png', 'public/css')
        .copy('node_modules/icheck/skins/flat/[email protected]', 'public/css').version();

Ответ 2 · Angus Simons

Вы можете создать в своем config/filesystem.php новый диск, указывающий на эту папку.

'package' => [
            'driver' => 'package',
            'root' => base_path('package'),
        ],

в лезвии

{{ Storage::disk('package')->url('vendor_name/package_name/src/assets/js/login.js') }}

настраиваемый каталог для представлений

чтобы отредактировать это, вы должны войти в config/view.php и добавить свои пути base_path('package/vendor_name/package_name/src/views') для каждого пакета.

'paths' => [
        resource_path('views'),
        base_path('package/vendor_name/package_name/src/views'),
    ],

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы