我正在尝试从数据库获取输出,使用 compact 从控制器搜索传递它,然后将其传递给自定义刀片帮助程序。
当我传递数据库详细信息时,我得到所述用户 id 的值,这可以使用
@foreach($SelectUser as $key => $UserArray)
{{$UserArray->user_id}}
@endforeach
我将获得用户 id 的预期输出,例如 1。
当我尝试将其与我的助手结合使用以将值更改为可读用户名时,输出帮助程序类的值以转换为可读用户名时,它不会接缝。
@foreach($selectUseras $key => $UserArray)
@FindUsername($UserArray->user_id)
@endforeach
帮助程序类是
public function boot()
{
//A Helper to translate a user id number in to a readable username
Blade::directive('FindUsername', function ($id) {
// Request infomation from the db useing eloquent
$username = User::where('id', $id)
->pluck('username');
//Results to an array
$arr = $username->toArray();
//Filter through array results
$i = implode(" ",$arr);
return $i;
});
}
Blade 指令应该返回的不是实际值,而是一些 php 代码。您应该将指令更改为:
//Filter through array results
$i = implode(" ",$arr);
// return php-code which echo'es you value
return "<?php echo $i;?>";
您需要打印值,而不是返回。 当刀片文件将被编译并解决刀片指令时,它只会像 php 文件一样显示打印的值,
例如:在PHP文件中,如果你写$i = 1;,那么它在浏览器中编译时不会显示,它只会在你
echo $i
时显示;
所以你需要返回这个
return "<?php echo $i;?>";
不要忘记运行
php artisan view:clear
,您需要在更新指令之前清除已编译的视图。