您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
4-3 GII工具之CURD
发布时间:2023-05-16 15:23:36编辑:雪饮阅读()
-
接续上篇,这次我们继续来到gii工具界面我从CRUD Generator的Start按钮进去一个新的界面
这里Model Class我们要填写我们已经存在的模型的名称空间如
app\models\WpUsers
这里的Search Model Class也是自己定义的一个模型名称空间应该是未必存在的,会根据你的定义来生成的(这个应该是在查询列表里面要用到的,”增删改查”的”查”),如
app\models\WpUsersSearch
Controller Class同样是自己定义,然后根据定义的名称空间路径来生成的,如:
app\controllers\WpUsersController
其它的哪些则是可以操作(填写)也不可以不操作。
然后咱们Preview按钮进入下个界面确认没有问题了再下个界面点击Generate按钮进行生成。
生成好之后我们的新的控制器的访问路由如(这里好像我用了yii2.0.6后这里路由控制器由两个首字母大写的单词组成时候的路由规则有点区别于2.0.3了)
http://www.xyyii.com/basic/web/index.php?r=wp-users/index
这里看似是一个可以增删改查的界面,但是实际上你增加数据会发现抛出错误如:
Invalid Parameter – yii\base\InvalidParamException
Unknown scenario: default
这是因为我们没有给生成出来的控制器在增加数据时候给模型指定场景,也就是上篇中我们所学习的场景。
可以看看它这个增加数据的操作
public function actionCreate()
{
$model = new WpUsers();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->ID]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
这里load没有第二个参数,那么据说是默认以load的所有者(即模型)的类名为key
那么由于这里所依赖的这个模型是我们上篇中已经定义过场景列表的,所以我们只需要在控制器这个actionCreate中指定一个场景名即可,例如我这里指定的是上篇中的那个场景1的场景名。
public function actionCreate() { $model = new WpUsers(); $model->scenario='scenario1'; if ($model->load(Yii::$app->request->post()) && $model->save()) { return $this->redirect(['view', 'id' => $model->ID]); } else { return $this->render('create', [ 'model' => $model, ]); } }至于这里的以模型类名为key,我们也可以不用操心,因为如果你f12查看浏览器network里面的请求负载,可以看到大概如下
WpUsers[ID]:
WpUsers[user_login]:
WpUsers[user_pass]:
WpUsers[user_nicename]:
WpUsers[user_email]:
WpUsers[user_url]:
WpUsers[user_registered]:
WpUsers[user_activation_key]:
WpUsers[user_status]:
WpUsers[display_name]: kasumi
很显然已经是以模型名为key的负载结构了。
当然你操作到这里了,那么一次增加数据的操作也算是成功了。
另外再补充一点:当所用模型中没有定义如
public function scenarios() { return [ 'scenario1'=>['ID','user_login'], 'scenario2'=>['ID'] ]; } 时候则上面的控制器中就不需要多于修改代码了。 或者模型中该定义如果返回空数组,应该也是可以吧。不过其它类同false的这些情况我这里就不细究验证了。
关键字词:gii
上一篇:4-2 GII工具应用场景
下一篇:4-4 GII工具之widget