【发布时间】:2020-12-14 22:49:43
【问题描述】:
我有一些使用 HTML 构建的常用复杂 UI 元素(例如卡片、按钮组等) 为此,我想创建可重复使用的刀片元素。
我找到的最接近的解决方案是自定义刀片指令。
我定义了一个简单的卡片指令如下:
Blade::directive('card', function ($expression) {
list($title, $icon, $buttons) = explode(',', str_replace(["'"], '', $expression));
$str = '<div class="card card-custom">
<div class="card-header">
<div class="card-title">
<span class="card-icon">
<i class="'.$icon.'"></i>
</span>
<h3 class="card-label">'.$title.'
</div>
<div class="card-toolbar">'.$buttons.'
</div>
</div>
<div class="card-body">';
return "<?php echo '".$str."'; ? >";
});
Blade::directive('endcard', function () {
return '</div></div>';
})
在我的刀片中,我只是这样称呼它:
@card('Dashboard', 'fa fa-tachometer', $buttonsHtml)
<div> Card content here...</div>
@endcard
想要附上的图片。
问题是我不能将任何参数作为变量传递(如 $buttonsHtml),因为它会将其字面意思视为“$buttonsHtml”。
我没有看到有人在将变量传递给自定义指令之前尝试对其进行评估。甚至有可能做到这一点吗?
如果我需要传递 $buttonsHtml 变量的实际值,那将毫无用处,因为它是由其他函数生成的。任何人都有解决方法的想法,甚至可以替代使用自定义指令?
【问题讨论】:
标签: laravel laravel-blade laravel-7