2017-08-27 1 views
2

Vielen Dank im Voraus für jede Hilfe hier. Ich bin neu in Laravel und möchte lernen, wie ich schiebe, damit ich verbessern kann.Laravel - Array Output Ausgabe

Also ich versuche, eine Ausgabe von einer DB-Suche zu nehmen übergeben sie von einem Controller mit Compact und dann an einen benutzerdefinierten Blade-Helper übergeben.

, wenn ich über die db Details geben bekomme ich einen Wert des Benutzer-ID und das angezeigt werden kann

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

         {{$UserArray->user_id}} 

        @endforeach 

mit I eine Ausgabe erhalten, wie von einem Benutzer-ID zum Beispiel erwartete 1

wenn Ich versuche, dies mit meinem Helfer zu kombinieren, um den Wert in einen lesbaren Benutzernamen zu ändern, der nicht dazu da ist, einen Wert auszugeben, damit die Hilfsklasse in einen lesbaren Benutzernamen umgewandelt werden kann.

     @foreach($selectUseras $key => $UserArray) 

         @FindUsername($UserArray->user_id) 

        @endforeach 

Helper-Klasse ist

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; 

    }); 

} 

Antwort

1

Blade-Richtlinie sollte nicht wirklich Wert zurückgeben, aber einige PHP-Code. Sie sollten Ihre Richtlinie ändern:

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

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

Dank Ich stimme zu, dass sie ein PHP-Code sein sollte, es war ihr ich hatte es herausgenommen, während nur versucht, Fixes und nicht zurück. aber es hatte noch keinen wert bestanden. – ItsLewis

+0

Haben Sie den Code der Direktive debuggt? Was, wenn Sie einen Wert wie "echo" zurückgeben Etwas "statt" $ i "? Funktioniert das? –

0

Sie müssen die Werte drucken, nicht zurück. Wenn Blade-Datei kompiliert werden und Blade-Richtlinie wird gelöst werden, dann wird es nur die gedruckten Werte zeigen, wie eine PHP-Datei hat,

für ex: in einer PHP-Datei, wenn Sie $ i schreiben = 1 ;, dann wird es nicht angezeigt, wenn es im Browser kompiliert wird, es wird nur angezeigt, wenn Sie echo $i machen;

So müssen Sie zurück diese

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

Vergessen Sie nicht php artisan view:clear ausführen können, müssen Sie Ihre kompilierte Ansicht löschen, bevor die Richtlinie zu aktualisieren.

+0

Danke Ich stimme zu, dass sie ein PHP-Code sein sollten. Es war ihr, dass ich es herausgenommen hatte, während ich nur Fehlerbehebungen ausprobierte und es nicht zurücksetzte. aber es hatte noch keinen wert bestanden. wie es funktioniert ohne die Rückkehr ""; – ItsLewis

+1

@ItsLewis Haben Sie diesen Befehl ausgeführt, der die zwischengespeicherten Ansichten löscht. 'php artisan view: clear', kann es der eine Grund sein, weil Ansichten bereits zwischengespeichert sind und diese neue Direktive nicht übernimmt? – Vikash