Laravel Пользовательская директива лезвия

Привет, друзья,

Сегодня я хотел бы поговорить о директивах пользовательского лезвия Laravel. Вы наверняка видели @if, @endif, которые называются директивами.

В этом посте я помогу вам создать свои собственные директивы, их ограничения и случаи использования, которые в конечном итоге помогут вам сделать разработку приложений намного проще.

Здесь мы рассмотрим пример директивы. Сначала создайте провайдер с помощью artisan.

php artisan make:provider BladeServiceProvider

Путь будет app/Providers/BladeServiceProvider.

<?php

namespace AppProviders;

use IlluminateSupportServiceProvider;
use IlluminateSupportFacadesBlade;

class BladeServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }
}

Войдите в полноэкранный режим Выйти из полноэкранного режима

@print(object)

В функции загрузки провайдера, который мы только что создали.

Blade::directive('print', function ($payload) {
     return "<?php 
       echo'<pre>';
       print_r($payload);
       echo'</pre>'; 
     ?>";
});
Войти в полноэкранный режим Выйти из полноэкранного режима

Затем мы можем использовать эту директиву как @print($any_object_or_array) в любом шаблоне блейда.
Если эта директива не работает или не отображается, то проблема кроется в кэше. Вам нужно очистить кэш представления или вы можете запустить php artisan optimize:clear, чтобы очистить весь кэш любого типа.

Это лишь минимальная реализация и использование блейд-директив.

Ограничения и проблемы

Основная проблема, с которой вы столкнетесь при использовании этой пользовательской директивы — это кэш. Если вы не сделаете их динамическими по своей природе. Тогда движок кэша laravel обнулит ваше общее поведение директивы.

Blade::directive('{name}', function () { return 'string_expression'})

{string_expression} — это выражение в строковой форме, например.

Но если вы передали что-то в непроцессированной форме кода, например, используя другую директиву или инъекцию laravel blade-view, например.

Это приведет к конфликту с кэш-движком laravel.

Если вы хотите отобразить шаблон блейда при использовании вашей директивы, вы можете написать что-то вроде

Если у вас есть какие-либо вопросы или проблемы, которыми вы хотите поделиться, просто напишите @bilalthepunjabi в обсуждениях.

Оцените статью
Procodings.ru
Добавить комментарий