Я не использую генератор CRUD в gii, но хочу иметь действие вида в моем gridview (чтение в CRUD) У меня есть 2 модели и 2 активных записи для таблиц в моей базе данных. В моем контроллере у меня есть действие, которое использует sqlDataProvider и inner, которые я использую для создания зависимостей из моих таблиц, потому что я не знаю другого пути. Как я могу обработать щелчок по элементу gridview? Я хочу увидеть этот элемент в новом представлении, только один из них. Как я могу это сделать? Или, может быть, я могу сделать зависимость от своего стола и использовать CRUD-генератор, и это проще? Регулятор:Как вставить действие вида без CRUD в gii
public function actionIndex()
{
if(Yii::$app->user->isGuest)
{
return $this->redirect(['login']);
}
else
{
$dataProvider = new SqlDataProvider([
'sql' => 'SELECT p.id,p.user_id,p.post_title,p.post_text,u.name ' .
'FROM Posts p '.
'INNER JOIN User u ' .
'ON p.user_id = u.id'
]);
return $this->render('index',['dataProvider'=>$dataProvider]);
}
}
и теперь, когда я нажимаю на пункт У меня есть URL так:
http://localhost/test/basic/site/0 и я создал действия для hadle, что URL, но я не знаю, что делать в нем, Теперь это просто скопировать индекс действия:
public function actionView($id)
{
if(Yii::$app->user->isGuest)
{
return $this->redirect(['login']);
}
else
{
$dataProvider = new SqlDataProvider([
'sql' => 'SELECT p.id,p.user_id,p.post_title,p.post_text,u.name ' .
'FROM Posts p '.
'INNER JOIN User u ' .
'ON p.user_id = u.id'
]);
return $this->render('index',['dataProvider'=>$dataProvider]);
}
}
мой взгляд индекс:
<?php
use yii\grid\GridView;
?>
<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
'ID'=>'id',
'Title'=>'post_title',
'Text'=>'post_text',
'Author'=>'name',
[
'class' => 'yii\grid\ActionColumn',
'header'=>'Действия',
'headerOptions' => ['width' => '80'],
'template' => '{view}',
],
],
'rowOptions' => function ($model, $key, $index, $grid) {
return ['id' => $model['id']];
},
]); ?>
Я пытаюсь сделать зависимость (видел в другом действии), но не знаю, правильно это или сейчас. И что дальше, когда я это делаю.
public function getUser()
{
return $this->hasOne(User::classname(),['user_id'=>'id']);
}