Laravel - 阵列输出问题

时间:2017-08-27 18:05:19

标签: php laravel

在这里感谢先进的任何帮助。我是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;

    });

}

2 个答案:

答案 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,您需要在更新指令之前清除已编译的视图。