我为我的项目创建了自定义指令。我有一个表,当我手动在此活动列中执行0(零)时,我希望我的指令起作用没有使php artisan view:clear。如果我不工作php artisan view:clear我的指令不起作用。而且我不为我的指令发送参数。
我如何在不使用php artisan view的情况下执行此指令:清除我的代码:
<?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 } ?>';
});
}
}
您可以使用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的版本更改为您正在使用的版本。