yii2 更改 gridview 模型
yii2 change gridview model
我正在维护一个带有模型和 child 记录网格的表单。我希望网格显示 child 的 url,而不是 parent。
我有两个共享 parent-child 关系的数据库表。我只显示了重要的字段。
describe ops;
+---------------+--------------+
| serial_number | int(11) |
+---------------+--------------+
describe opsitem;
+---------------+--------------+
| opsitem_id | int(11) |
| ops_id | int(11) | # foreign key
| serial_number | int(11) |
+---------------+--------------+
在我的控制器中,我为 Ops 显示一个表单,然后为 child 条记录创建一个 activeRecord - Opsitem
class OpsController extends Controller
public function actionUpdate($id)
{
$model = $this->findModel($id);
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->ops_id]);
} else {
$searchModel = new OpsitemSearch();
$dataProvider = $searchModel->search(
['OpsitemSearch' => ['ops_id' => $model->ops_id]]
);
return $this->render('update', [
'model' => $model,
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
}
}
我的表单包含 ops (parent) 的表单字段,然后是包含 oppsitem (child) 记录的网格
// $model is Parent - Ops
<?php echo $this->render('_form', [
'model' => $model,
]) ?>
// $searchModel is Opsitem - Child
<?php echo GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
'ops_item_id',
'ops_id',
'serial_number'
[
'class' => 'yii\grid\ActionColumn',
'template' => '{update}{delete}',
],
],
]); ?>
单击网格上的 'update' 按钮会将我指向 url
:
/ops/update?id=1234
我要
/opsitem/update?id=1234
您可以自定义 gridview
按钮。例如,
'template' => '{update} {delete}',
'buttons' => [
'update' => function ($url, $model) {
return Html::a('Update',\Yii::$app->getUrlManager()->createUrl(['/opsitem/update', 'id' => 1234]),['class' => 'any class']);
},
],
您需要为更改控制器添加 controller
属性。
就像,
<?php echo GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
'ops_item_id',
'ops_id',
'serial_number'
[
'class' => 'yii\grid\ActionColumn',
'template' => '{update}{delete}',
'controller' => 'opsitem',
],
],
]); ?>
我正在维护一个带有模型和 child 记录网格的表单。我希望网格显示 child 的 url,而不是 parent。
我有两个共享 parent-child 关系的数据库表。我只显示了重要的字段。
describe ops;
+---------------+--------------+
| serial_number | int(11) |
+---------------+--------------+
describe opsitem;
+---------------+--------------+
| opsitem_id | int(11) |
| ops_id | int(11) | # foreign key
| serial_number | int(11) |
+---------------+--------------+
在我的控制器中,我为 Ops 显示一个表单,然后为 child 条记录创建一个 activeRecord - Opsitem
class OpsController extends Controller
public function actionUpdate($id)
{
$model = $this->findModel($id);
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->ops_id]);
} else {
$searchModel = new OpsitemSearch();
$dataProvider = $searchModel->search(
['OpsitemSearch' => ['ops_id' => $model->ops_id]]
);
return $this->render('update', [
'model' => $model,
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
}
}
我的表单包含 ops (parent) 的表单字段,然后是包含 oppsitem (child) 记录的网格
// $model is Parent - Ops
<?php echo $this->render('_form', [
'model' => $model,
]) ?>
// $searchModel is Opsitem - Child
<?php echo GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
'ops_item_id',
'ops_id',
'serial_number'
[
'class' => 'yii\grid\ActionColumn',
'template' => '{update}{delete}',
],
],
]); ?>
单击网格上的 'update' 按钮会将我指向 url
:
/ops/update?id=1234
我要
/opsitem/update?id=1234
您可以自定义 gridview
按钮。例如,
'template' => '{update} {delete}',
'buttons' => [
'update' => function ($url, $model) {
return Html::a('Update',\Yii::$app->getUrlManager()->createUrl(['/opsitem/update', 'id' => 1234]),['class' => 'any class']);
},
],
您需要为更改控制器添加 controller
属性。
就像,
<?php echo GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
'ops_item_id',
'ops_id',
'serial_number'
[
'class' => 'yii\grid\ActionColumn',
'template' => '{update}{delete}',
'controller' => 'opsitem',
],
],
]); ?>