model-view-controller - Yii2 - DynamicModel 中的属性
问题描述
我创建了一个yii\base\DynamicModel
in 控制器,并且我有一个带有该模型属性的表单。在控制器中提交表单后,我需要访问这些属性。
控制器.php
public function actionCreate()
{
$model = new DynamicModel([
'name', 'age', 'city'
]);
if($model->load(Yii::$app->request->post())){
$model->age = $model->age + 5;
/*
* code....
* */
return $this->redirect(['index']);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
但是$model->age
, $model->name
etc. 什么也不返回。
我只能通过这种方式访问属性:Yii::$app->request->get('DynamicModel')['age']
访问这些属性的正确方法是什么?
解决方案
您需要配置验证规则以便通过以下方式自动加载属性load()
:
$model = new DynamicModel(['name', 'age', 'city']);
$model->addRule(['name', 'age', 'city'], 'safe');
if ($model->load(Yii::$app->request->post())) {
// ...
Usingsafe
将按原样接受值而无需实际验证,但您可以考虑添加真正的验证规则以确保模型的正确状态。
推荐阅读
- rdf - 如何在语义网中发布来自 DBpedia 的链接开放数据?
- floating-point - 浮点数的格式既不是IEEE754也不是hardFloat?
- jhipster - JHipster - 在 compileJava 任务期间“文件管理器问题:尝试为类型重新创建文件”
- node.js - 每次我使用 OAuth 2 和 Passportjs 登录测试 Google 帐户时都会收到一个新的访问令牌和刷新令牌
- laravel - 如何根据 Laravel 中的嵌套值(required_if)进行验证
- java - Lombok 生成的构造函数不能在 SpringBootTest 中隐式自动装配
- java - MySql(休眠)查询
- mqtt - 为什么不能将主题别名存储在 MQTT v5 中的持久会话中
- shell - 获取 + if [[ -z "$CI_COMMIT_TAG" ]]; 然后 + ~ ... 使用 shell 执行程序时 Windows 10 上的错误
- reactjs - 导出具有 Material-UI 主题支持的辅助函数