В таблице squad поле docs
В нем пользователь хранит документы, которые формируются ссылкой типа:
uploads/documents/2022/03/14/21efaFdffewrgs.zip
Либо ничего не загружает и полю присваивается значение NULL
Вывожу данные с помощь kartik gridview.
Хочу сделать так, чтобы выводилась в squad/index.php кнопка либо скачать, либо ничего не выводилось, либо "Документ отсутствует".
Сделал в squad/view как хотел и стал переносить на squad/index, но появились сложности
squadController.php
public function actionIndex()
{
$id = Yii::$app->user->identity->id;
$model = $this->findModel($id);
$kvartal = User::findOne($id);
$searchModel = new SquadSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('index', [
'model' => $model,
'kvartal' => $kvartal,
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
В view это работает. Если есть данные - кнопка выводится. Нет данных - не выводится.
public function actionView($id)
{
//проверка прав файл
$model = $this->findModel($id);
if (!\Yii::$app->user->can('OwnSquad', ['post' => $model])) {
throw new ForbiddenHttpException('Access denied');
}
return $this->render('view', [
'model' => $this->findModel($id),
]);
}
view
<?php
$pole_docs = $model->docs;
$pole = '';
if (strcmp($pole_docs, $pole) !== 0) {
$download = function (Squad $data) {
return Html::a(Html::tag('div', "<div class = 'btn btn-danger'>Скачать</div>" ), Url::to(['/kabinet/squad/download?id=' . $data->id]));
};
}
?>
Код в squad/index.php, который работает в view но не работает в gridView
<?php
$pole_docs = $model->docs;
$pole = '';
if (strcmp($pole_docs, $pole) !== 0) {
$download = function (Squad $data) {
return Html::a(Html::tag('div', "<div class = 'btn btn-danger'>Скачать</div>" ), Url::to(['/kabinet/squad/download?id=' . $data->id]));
};
}
else
if (strcmp($pole_docs, $pole) !== 0) {
$download = function (Squad $data) {
return Html::a(Html::tag('div', "<div class = 'btn btn-danger disabled'>Документ отсутствует</div>" ));
};
}
?>
...
[
'attribute' => 'docs',
'value' => $download,
'format' => 'raw',
],
protected function findModel($id)
{
if (($model = Squad::findOne($id)) !== null) {
return $model;
}
throw new NotFoundHttpException('The requested page does not exist.');
}