拉拉维尔 - 阵列输出问题



我正在尝试从数据库获取输出,使用 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,您需要在更新指令之前清除已编译的视图。

最新更新