Реализованна функция вывода тега к статье к категории, но на данный момент можно добавить только один тег,
а как сделать чтоб можно было добавить сразу несколько тегов ?
Код: Выделить всё
public function actionCreate()
{
$model = new Tag();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
}
return $this->render('create', [
'model' => $model,
]);
}
Код: Выделить всё
<div class="article-form">
<?php $form = ActiveForm::begin(); ?>
<?= /** @var TYPE_NAME $selectedTags */
/** @var TYPE_NAME $tags */
Html::dropDownList('tags', $selectedTags, $tags, ['class'=>'form-control', 'multiple'=>true]) ?>
<div class="form-group">
<?= Html::submitButton('Добавить', ['class' => 'btn btn-success']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>
Код: Выделить всё
public function getTags()
{
return $this->hasMany(Tag::className(), ['id' => 'tag_id'])
->viaTable('article_tag', ['article_id' => 'id']);
}
public function getSelectedTags()
{
$selectedIds = $this->getTags()->select('id')->asArray()->all();
return ArrayHelper::getColumn($selectedIds, 'id');
}
public function saveTags($tags)
{
if (is_array($tags))
{
$this->clearCurrentTags();
foreach ($tags as $tag_id)
{
$tag = Tag::findOne($tag_id);
$this->link('tags', $tag);
}
}
}
public function clearCurrentTags()
{
ArticleTag::deleteAll(['article_id'=>$this->id]);
}
возможно я пишу не корректно о вопросе, но
если нужны другие файлы , я предоставлю.