Yii2。如何从相关表中获取数据并将其添加到Sluggable行为中。 在下面的例子中,我希望为每本书添加slug-title,如“Book House,作者Greenberg”。
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 :(得分:0)
只需对可缓冲行为使用回调,如下所示:
public function behaviors()
{
return [
[
'class'=>SluggableBehavior::className(),
'value'=>function ($event) {
$parts = ['Book', $this->name, 'author', $this->author->name];
return Inflector::slug(implode('-', $parts));
},
],
];
}
我的例子会输出一个像这样的slu :: book-house-author-greenberg
这是slug比你的版本更好的做法。无论如何...如果您仍然喜欢上述方式,只需更改返回值。
我的示例中使用的功能的文档是here。