klisl / laravel-widgets
Package for using widgets in Laravel-5
Installs: 3 456
Dependents: 0
Suggesters: 0
Security: 0
Stars: 9
Watchers: 1
Forks: 6
Open Issues: 0
Requires
- php: >=5.4.0
- laravel/framework: ~5.3
This package is not auto-updated.
Last update: 2024-11-14 06:41:14 UTC
README
Пакет для удобного создания и использования виджетов в Laravel-5
- Удобный синтаксис - вызов любого виджета из шаблона с помощью простой директивы @widget, которая в качестве первого аргумента принимает название виджета, например:
@widget('menu')
- Простые правила создания виджетов.
- Создание объекта виджета только в случае непосредственного его запроса.
- Только самый необходимый функционал, разработанный с учетом архитектуры Laravel-5.4
Установка
Установка пакета с помощью Composer.
composer require klisl/laravel-widgets
Если версия Laravel меньше чем 5.5 - добавьте в файл config/app.php
вашего проекта в конец массива providers
:
Klisl\Widgets\WidgetServiceProvider::class,
Для версии >=5.5 данный шаг можно пропустить.
После этого выполните в консоли команду публикации нужных ресурсов:
php artisan vendor:publish --provider="Klisl\Widgets\WidgetServiceProvider"
Использование
В файле config\widgets.php
находится массив, в котором, в качестве ключей нужно указать названия для виджетов которые вы будете создавать, а в качестве значений названия классов виджетов (с пространством имен). Например:
'test' => 'App\Widgets\TestWidget'
Классы для своих виджетов нужно создавать в папке app\Widgets
. Для размещения шаблонов виджетов предназначена папка app\Widgets\views
.
Класс виджета должен иметь соответствующее пространство имен: namespace App\Widgets
. Так же класс виджета должен включать интерфейс ContractWidget и реализовывать его метод execute().
Если виджет должен, для своей работы, получить какие-то данные из контроллера и тд. (передаются в шаблоне), то необходимо предусмотреть метод конструктор для класса виджета с получением аргумента в виде массива параметров.
Примеры
Пример минимального класса виджета:
<?php namespace App\Widgets; use Klisl\Widgets\Contract\ContractWidget; class TestWidget implements ContractWidget{ public function execute(){ return view('Widgets::test'); } }
Шаблон данного виджета, файл test.blade.php (с произвольным контентом) должен находиться в папке app\Widgets\views
.
Вызов данного виджета (из основного шаблона нужного контроллера):
@widget('test')
Пример с передачей параметров:
<?php namespace App\Widgets; use Klisl\Widgets\Contract\ContractWidget; class TestWidget implements ContractWidget{ public $num; public function __construct ($data){ $this->num = $data['num']; } public function execute(){ return view('Widgets::test', [ 'num' => $this->num ]); } }
Вызов данного виджета с передачей параметров для обработки:
@widget('test', ['num' => 5])
В каталоге app\Widgets
уже находится тестовый виджет. Вы можете создавать свои на его основе.
Мой блог: klisl.com