Wenn Sie in Laravel Eloquent-Modellen eine profile_image
-Eigenschaft einer Accessor-Methode verwenden und /user.png
als Fallback-Wert zurückgeben möchten, wenn die Eigenschaft leer oder falsch ist, können Sie im Modell einen Accessor definieren. So geht's:
<code class="language-php">class User extends Authenticatable { // 其他模型代码... public function getProfileImageAttribute($value) { return $value ? asset('/storage' . $value) : url('/user.png'); } }</code>
Nachdem Sie diesen Accessor in Ihrem User
-Modell definiert haben, durchläuft jedes Mal, wenn Sie auf eine User
-Eigenschaft einer profile_image
-Modellinstanz zugreifen, diese Accessor-Methode. Wenn der Wert nicht leer ist ($value
wird als wahr ausgewertet), wird die Ressourcen-URL basierend auf diesem Wert zurückgegeben. Andernfalls wird die alternative URL /user.png
zurückgegeben.
Dann können Sie in Ihrer Blade-Vorlage direkt Folgendes verwenden:
<code class="language-blade">auth()->user()->profile_image</code>
Keine zusätzliche Logik erforderlich:
<code class="language-blade"><img alt="User Image" src="{{ auth()->user()->profile_image }}"></img></code>
Warum lautet der Methodenname getProfileImageAttribute($value)
?
Im Eloquent ORM von Laravel werden Eigenschaftszugriffsfunktionen mithilfe einer dreiteiligen Namenskonvention definiert:
get
: Dies zeigt an, dass die Methode ein Getter-Accessor ist. Wird verwendet, wenn Sie den Wert einer Eigenschaft abrufen.
AttributeName
: Dieser Teil stellt den Namen der Eigenschaft dar, für die Sie einen Accessor definieren möchten. In diesem Fall ist es ProfileImage
. Eigenschaftsnamen verwenden in der Regel die Schreibweise „StudlyCaps“, was bedeutet, dass jedes Wort im Namen mit einem Großbuchstaben beginnt, ohne Leerzeichen oder Unterstriche zwischen den Wörtern.
Attribute
: Dieser Teil gibt an, dass die Methode ein Eigenschaftsaccessor ist. Zusammengenommen bedeutet getProfileImageAttribute($value)
also:
get
: Dies ist ein Getter-Accessor. ProfileImage
: wird für profile_image
-Attribute verwendet. Attribute
: Dies ist ein Eigenschaftsaccessor. Diese Namenskonvention wird verwendet, um Eigenschaftsaccessoren automatisch den entsprechenden Eigenschaften im Eloquent-Modell zuzuordnen. Wenn Sie $model->profile_image
verwenden, um den Wert einer profile_image
-Eigenschaft abzurufen, sucht Laravel intern nach einer Zugriffsmethode namens getProfileImageAttribute
, um den Wert der Eigenschaft bereitzustellen. Diese Konvention hilft Laravel, bei Bedarf automatisch Zugriffsmethoden aufzurufen, ohne dass eine zusätzliche Konfiguration erforderlich ist.
Das obige ist der detaillierte Inhalt vonLaravel-Attribute. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!