在这里感谢先进的任何帮助。我是laravel的新手,想知道我是怎么出错的,所以我可以改进。
因此,我尝试从数据库搜索中获取输出,使用compact从控制器传递它,然后将其传递给自定义刀片助手。
当我传递db详细信息时,我得到所述用户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;
});
}
答案 0 :(得分:1)
Blade指令应该返回不是真正的值,而是一些php代码。您应该将指令更改为:
//Filter through array results
$i = implode(" ",$arr);
// return php-code which echo'es you value
return "<?php echo $i;?>";
答案 1 :(得分:0)
您需要打印值,而不是返回。 当编译刀片文件并解析刀片指令时,它只会显示像php文件那样的打印值,
对于ex:在php文件中,如果你写$ i = 1;,那么它将在浏览器中编译时不显示,它只会在你
echo $i
时显示;
所以你需要返回这个
return "<?php echo $i;?>";
不要忘记运行
php artisan view:clear
,您需要在更新指令之前清除已编译的视图。