2016-07-30 4 views
1

Ich habe Post-Modell, das Benutzerfunktion hat, die Benutzermodell zurückgibt - Ersteller des Beitrags.Laravel: URL oder Standardwert in Blade-Ansicht drucken

class Post extends Model 
{ 
    /** 
    * Get the user that owns the post. 
    */ 
    public function user() 
    { 
     return $this->belongsTo(User::class); 
    } 
} 

In Klinge Ansicht erreicht ich, wie der Name des Autors drucken

{{ $post->user->name or 'Anonymous' }} 

obige Code funktioniert, aber es ist sehr hmm empfindlich? Zum Beispiel habe ich versucht, diesen Code ändern:

{{ $post->user->name, 'Anonymous' }} 

<?php $post->user->name or 'Anonymous' ?> 

Ergebnisse? Der Versuch, die Eigenschaft von Nicht-Objekt Fehler online mit diesem Code zu erhalten. Vielleicht überspringe ich etwas Einfaches aber Wichtiges. Wie URL oder Standardwert in Blade-Ansicht drucken. Pseudo-Code, was ich meine:

{{ '<a href="url('/profile/' .$post->user->name)"></a>' or 'Anonymous' }} 

Antwort

2

Versuchen

{{ isset($post->user->name) ? '<a href="url('/profile/' . $post->user->name)"></a>' : 'Anonymous' }} 

Wenn dies nicht (ich es überprüfen nicht) funktioniert versuchen, etwas wie folgt aus:

@if (isset($post->user->name)) 
    <a href="url('/profile/' . $post->user->name)"></a> 
@else 
    Anonymous 
@endif 
+0

Erster Code löst "Verwendung von undefinierten konstanten Profil - angenommen 'Profil'" Fehler, wenn Bedingung wahr ist, und Anonym, wenn Bedingung falsch ist. Der zweite Code gibt einfache Variablennamen aus, wenn die Bedingung wahr ist, und Anonym, wenn die Bedingung falsch ist. '{{ $post->user->name }}' behebt es –

1

Eigentlich ist der Fehler nicht, da der Code empfindlich ist, ist es, weil Sie tatsächlich versuchen, nicht Objekte Werte zuzugreifen.

Um das zu erreichen, was Sie suchen:

{{ isset($post->user)?'<a href="url('/profile/' .$post->user->name)"></a>' : 'Anonymous' }}