russsiq/laravel-widget

This package is abandoned and no longer maintained. No replacement package was suggested.

Дополнительный функционал для компонентов Laravel 8.x.

dev-master 2021-04-21 05:21 UTC

This package is auto-updated.

Last update: 2021-05-21 05:32:27 UTC


README

Введение

Виджеты – обертка для стандартных компонентов Laravel, но с расширенным функционалом: валидация входящих параметров.

Виджеты поддерживают компоненты только на основе классов и при наличии обязательного отдельного шаблона представления или нескольких шаблонов.

Установка

Для добавления зависимости в новый проект на Laravel, добавьте в файле composer.json

"require": {
    // ...
    "russsiq/laravel-widget": "dev-master"
}

Для подключения в уже созданный проект, используйте менеджер пакетов Composer:

composer require russsiq/laravel-widget

Если в вашем приложении включен отказ от обнаружения пакетов в директиве dont-discover в разделе extra файла composer.json, то необходимо самостоятельно добавить в файле config/app.php поставщик службы в раздел providers:

'providers' => [
    /*
     * Package Service Providers...
     */
    Russsiq\Widget\WidgetServiceProvider::class,
],

Конфигурирование

Перед использованием пакета вам необходимо сверить соответствие параметра classes-namespace конфигурационного файла с желаемым пространством имен классов ваших будущих виджетов. Для этого необходимо опубликовать конфигурационный файл в ваше приложение:

php artisan vendor:publish --provider="Russsiq\Widget\WidgetServiceProvider" --tag=config

По умолчанию этот параметр имеет значение App\View\Components\Widgets.

По желании вы можете опубликовать шаблон, отображающий ошибки валидации входящих параметров виджета:

php artisan vendor:publish --provider="Russsiq\Widget\WidgetServiceProvider" --tag=views

Написание виджета

Генерация класса виджета и его шаблона

Чтобы создать виджет, вы можете использовать команду make:laravel-widget Artisan. Чтобы проиллюстрировать, как использовать виджеты, мы создадим простой виджет ArticlesFeatured:

php artisan make:laravel-widget ArticlesFeatured

Выполненная команда make:laravel-widget поместит по умолчанию класс виджета в каталог App\View\Components\Widgets, а его шаблон articles-featured.blade.php в resources\views\components\widgets.

Структура класса виджета

Сгенерированный класс виджета будет иметь следующую структуру:

<?php

namespace App\View\Components\Widgets;

use Russsiq\Widget\WidgetAbstract;

class ArticlesFeatured extends WidgetAbstract
{
    /**
     * Get the template name relative to the widgets directory.
     *
     * @var string
     */
    protected $template = 'components.widgets.articles-featured';

    /**
     * Create a new widget instance.
     *
     * @param array $parameters
     */
    public function __construct(array $parameters = [])
    {
        parent::__construct($parameters);
    }

    /**
     * Get the validation rules that apply to the widget parameters.
     *
     * @return array
     */
    public function rules(): array
    {
        return [
            //
        ];
    }
}

Отрисовка виджета

После того, как ваш компонент был создан, он может быть отображен с использованием псевдонима тега c передачей набора необходимых вам параметров через массив parameters:

<x-widget::articles-featured :parameters="[
    'parameter_1' => 'value_1',
    'parameter_2' => 'value_2',
]" />

Удаление пакета

Для удаления пакета из вашего проекта на Laravel используйте команду:

composer remove russsiq/laravel-widget

Лицензия

laravel-widget – программное обеспечение с открытым исходным кодом, распространяющееся по лицензии MIT.