, (*1)
Пакет для удобного создания и использования виджетов в Laravel-5, (*2)
- Удобный синтаксис - вызов любого виджета из шаблона с помощью простой директивы @widget, которая в качестве первого аргумента принимает название виджета, например:
@widget('menu')
- Простые правила создания виджетов.
- Создание объекта виджета только в случае непосредственного его запроса.
- Только самый необходимый функционал, разработанный с учетом архитектуры Laravel-5.4
Установка
Установка пакета с помощью Composer., (*3)
composer require klisl/laravel-widgets
Если версия Laravel меньше чем 5.5 - добавьте в файл config/app.php вашего проекта в конец массива providers :, (*4)
Klisl\Widgets\WidgetServiceProvider::class,
Для версии >=5.5 данный шаг можно пропустить., (*5)
После этого выполните в консоли команду публикации нужных ресурсов:, (*6)
php artisan vendor:publish --provider="Klisl\Widgets\WidgetServiceProvider"
Использование
В файле config\widgets.php находится массив, в котором, в качестве ключей нужно указать названия для виджетов которые вы будете создавать, а в качестве значений названия классов виджетов (с пространством имен). Например:, (*7)
'test' => 'App\Widgets\TestWidget'
Классы для своих виджетов нужно создавать в папке app\Widgets. Для размещения шаблонов виджетов предназначена папка app\Widgets\views., (*8)
Класс виджета должен иметь соответствующее пространство имен: namespace App\Widgets. Так же класс виджета должен включать интерфейс ContractWidget и реализовывать его метод execute().
Если виджет должен, для своей работы, получить какие-то данные из контроллера и тд. (передаются в шаблоне), то необходимо предусмотреть метод конструктор для класса виджета с получением аргумента в виде массива параметров., (*9)
Примеры
Пример минимального класса виджета:, (*10)
<?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., (*11)
Вызов данного виджета (из основного шаблона нужного контроллера):, (*12)
@widget('test')
Пример с передачей параметров:, (*13)
<?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
]);
}
}
Вызов данного виджета с передачей параметров для обработки:, (*14)
@widget('test', ['num' => 5])
В каталоге app\Widgets уже находится тестовый виджет. Вы можете создавать свои на его основе., (*15)
Мой блог: klisl.com, (*16)