在Laravel中创建指令

我为项目创建了自定义指令。 我有一个表,当我手动在此活动列中执行0(零)时,我希望我的指令起作用  没有使php artisan view:clear。 如果我不工作php artisan view:clear我的指令不起作用。 而且我不会为我的指令发送参数。

如何在不使用php artisan view的情况下执行此指令:clear 我的代码:

<?php

namespace App\Providers\Directives;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Blade;
use App\Models\Page;

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

    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot()
    {
        $page = Page::where('key','payment')->firstOrFail()->active;
        Blade::directive('payment',function() use($page){
            return "<?php if( $page ) { ?>";
        });

        Blade::directive('endpayment',function(){
            return '<?php } ?>';
        });
    }
}


jio123456 回答:在Laravel中创建指令

您可以使用Blade :: if()指令来实现此目的,正如@Jerodev所说,要使代码正常工作,您需要将$ page变量放在指令定义内。另外,使用Blade :: if()也会自动创建一个端块供您使用,请参见以下示例:

    public function boot()
    {
        Blade::if('payment',function() {
           return Page::where('key','payment')->firstOrFail()->active; 
        });
    }

如果希望每次调用@payment()时$page变量都是动态的,则可以在函数定义中添加参数,并在需要使用指令时传递所需的值。请参见Blade :: if()指令上的this blog post和官方的Blade documention(将laravel的版本更改为您正在使用的版本。

本文链接:https://www.f2er.com/2901173.html

大家都在问