2016-10-16 5 views
0

Yii2. Wie kann ich Daten aus der zugehörigen Tabelle abrufen und sie dem Sluggable-Verhalten hinzufügen? Im folgenden Beispiel möchte ich für jedes Buch Slug-Titel wie "Book House, Autor Greenberg" hinzufügen.Yii2- von verwandten Tabellennamen zu Sluggable

class Books extends \yii\db\ActiveRecord 
{ 

    public function behaviors() 
    { 
     return [ 
      [ 
       'class' => SluggableBehavior::className(), 
       'attribute' => "Book" . $this->name . ", author " . $this->getAuthor->name, 
      //'slugAttribute' => 'slug', 
      ], 
     ]; 
    } 
    public function getAuthor() 
    { 
     return $this->hasOne(Author::className(), ['id' => 'author_id']); 
    } 
} 
+0

Was meinen Sie mit verwandter Tabelle.Was ist Ihr genauer Bedarf und welches Problem haben Sie vor sich.Möchten Sie ein Attribut namens title, das den Wert von Buch-Name und Autor-Name kombiniert hat.Warum verwenden Sie das Verhalten hier. Fügen Sie weitere Details zu Ihrer Frage hinzu. –

Antwort

0

einfach einen Rückruf für das Sluggable Verhalten verwenden wie so:

public function behaviors() 
{ 
    return [ 
     [ 
      'class'=>SluggableBehavior::className(), 
      'value'=>function ($event) { 
       $parts = ['Book', $this->name, 'author', $this->author->name]; 
       return Inflector::slug(implode('-', $parts)); 
      }, 
     ], 
    ]; 
} 

Mein Beispiel gibt eine Schnecke wie folgt aus: book-house-author-greenberg die mehr best practice für Schnecken als Ihre Version ist. Wie auch immer ... wenn Sie die oben beschriebene Methode bevorzugen, ändern Sie einfach den Rückgabewert.

Das Dokument für die in meinem Beispiel verwendete Funktion ist here.

Verwandte Themen