Как создать url для переадресации?
Изучаю yii2 и столкнулся с проблемой. Хотел узнать, как просто добавить еще кнопки для переадресации соответсвенно - редактирование (projects/views/update), полная информация (projects/views/view) с учетом выбранного id.
Код который уже есть для вывода в dropdown button:
<?php
use backend\models\Tasks;
use yii\bootstrap5\Modal;
use yii\grid\ActionColumn;
use yii\grid\GridView;
use yii\helpers\Html;
use yii\helpers\Url;
/** @var yii\web\View $this */
/** @var backend\models\Projects $model */
/** @var backend\models\Tasks $model */
$this->title = $model->name;
\yii\web\YiiAsset::register($this);
?>
<div class="projects-view">
<p>
<div class="dropdown">
<button class="btn btn-primary " type="button" data-bs-toggle="dropdown" aria-expanded="false"> <i class="fa fa-fw fa-briefcase"></i>
</button>
<?php
Modal::begin([
'title' => '<h4>Приглашение в проект</h4>',
'toggleButton' => [
'label' => '<i class="fa fa-fw fa-user"></i>',
'class' => 'btn btn-secondary',],
]);
Modal::end();?>
<?= Html::a('<i class="fa fa-fw fa-plus"></i>',['/tasks/create','project_id'=>$model->id], ['class' => 'btn btn-success ',]); ?>
<ul class="dropdown-menu">
<?php
foreach ($model->getProjects() as $project)
echo '<li></li><a class="dropdown-item" href="/projects/index">'.$project->name.'</a>
</li>'
?>
</ul>
</div>
<p></p>
<p>Наименование: <?= $model ->name?></p>
<p>Описание: <?= $model ->description?></p>
<p>Статус: <?= $model::$statuses[$model->status]?></p>
<?= GridView::widget([
'dataProvider' => $model->getTasks(),
'columns' => [
['class' => 'yii\grid\SerialColumn'],
['label' => 'Наименование',
'attribute' => 'name',],
['label' => 'Описание',
'attribute' => 'description',],
['label' => 'Исполнитель',
'attribute' => 'executor_id',],
['label' => 'Куратор',
'attribute' => 'curator_id',],
[
'attribute' => 'status',
'label'=>'Статус',
'value' => static function ($model) {
return $model::$statuses[$model->status];
}
] ,
[
'class' => ActionColumn::className(),
'urlCreator' => function ($action, Tasks $model, $key, $index, $column) {
return Url::toRoute([$action, 'id' => $model->id]);
}
],
],
]); ?>
</div>
И вот что он выводит:
Пытался реализовать, догадался, что можно как то url вписывать в <li> </li>. Но не хватает понимания как это сделать)
А вот что я хочу получить:
Ответы (1 шт):
Автор решения: Евгений
→ Ссылка
попробуйте использовать в columns это (view, update, delete можно не переопределять):
[
'class' => 'yii\grid\ActionColumn',
'template' => '{view} {link} {update} {deactivate} {delete}',
'buttons' => [
'view' => function ($url, $model) {
return Html::a(
text/icon,
url,
options
);
},
'link' => function ($url, $model) {
return Html::a(
text/icon,
url,
options
);
},
'update' => function ($url, $model) {
return Html::a(
text/icon,
url,
options
);
},
'deactivate' => function ($url, $model) {
return Html::a(
text/icon,
url,
options
);
},
'delete' => function ($url, $model) {
return Html::a(
text/icon,
url,
options
);
},
],
]

