Воспользуемся поведением https://github.com/2amigos/yii2-taggable-behavior.
Делаем всё согласно описанию, но так как в моей модели записей блога поле для тегов называется 'tags', то в поведении явно прописываю это в параметре 'attribute' (т.к. по-умолчанию это расширение поведения тегов работает для атрибута tagNames)
'tags' => [
'class' => Taggable::className(),
'attribute' => 'tags',
]
Также устанавливаю Selectize Widget.
В виде хочу выводить не просто метки через запятую, а ссылки на статьи с этой меткой. Для этого в виде пишу:
<?php if(!empty($model->tags)) { ?> / Метки: <?= implode(', ', $model->tagLinks) ?><?php } ?>
а в модели Blog
<span>public function getTagLinks()
{
$selectedtagnames=array();
foreach(self::string2array($this->tags) as $tag) {
$selectedtagnames[]=Html::a($tag, array('blog/index', 'tag'=>$tag), $linkOptions=array('class'=>'categories', 'title'=>$tag));
}
return $selectedtagnames;
}</span>
Функция string2array() в этой же модели уже была
<span>public static function string2array($tags)
{
return preg_split('/\s*,\s*/',trim($tags),-1,PREG_SPLIT_NO_EMPTY);
}</span>
Источник:
Перейти