2017-08-27 18 views
2

ありがとうございました。私はlaravelに新しいが、改善することができるように私が間違っている方法を学びたいと思う。Laravel - アレイ出力の問題

これで、db検索の出力をコンパクトを使用してコントローラに渡し、カスタムブレードヘルパーに渡します。私は、DBの詳細上を通過するとき

は私が言ったユーザーIDの値を取得し、これはユーザーのIDなどの予想通り、私は出力が得られます

    @foreach($SelectUser as $key => $UserArray) 

         {{$UserArray->user_id}} 

        @endforeach 

を使用して表示することができます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; 

    }); 

} 

答えて

1

ブレードディレクティブは本物ではない値を返すべきであるが、いくつかのPHPコード。あなたの指示を次のように変更する必要があります。

//Filter through array results 
$i = implode(" ",$arr); 

// return php-code which echo'es you value 
return "<?php echo $i;?>"; 
+0

私は彼らが修正を試みていて戻していない間に私はそれを取り出していたいくつかのPHPコードであるべきだと同意します。まだそれは価値を渡さなかった。 – ItsLewis

+0

ディレクティブのコードをデバッグしましたか? '$ i'の代わりに' echo "Something" 'のような値を返すとどうなりますか?これは機能しますか? –

0

値を印刷する必要があります。 ブレードファイルがコンパイルされ、ブレードディレクティブが解決される場合は、それが唯一のPHPファイルなどの印刷された値が表示されますない、元のため

:PHPファイル内のあなたは、私が= $ 1を書いた場合;,それはブラウザでコンパイルされるときには表示されません。実行すると表示されます。echo $i;

ですから、この

return "<?php echo $i;?>"; 

php artisan view:clearを実行することを忘れないでください返却する必要がある、あなたは、ディレクティブを更新する前にコンパイルされたビューをクリアする必要があります。

+0

ありがとう私は彼らが私はそれを取っていただけいくつかのPHPコードになるはずですが、修正を試みていて、戻していないことに同意します。まだそれは価値を渡さなかった。それは戻りません "<?php echo $ i;?>"; – ItsLewis

+1

@ItsLewisキャッシュされたビューを削除するこのコマンドを実行しましたか? 'php artisan view:clear'というのは、ビューが既にキャッシュされていて、この新しいディレクティブを取っていないからです。 – Vikash