微调从形式价值,我想,当我使用Yii::$app->request->post('somefield')
的价值已经被清理修剪从表单张贴(以及preferrably还设置空字符串为空)的所有值,这样。那可能吗?在使用...request->post()
之前是否有修改POST值的钩子?Yii2:在POST阶段
我知道有this解决方案,但我想这样做的价值模型最终甚至之前...
微调从形式价值,我想,当我使用Yii::$app->request->post('somefield')
的价值已经被清理修剪从表单张贴(以及preferrably还设置空字符串为空)的所有值,这样。那可能吗?在使用...request->post()
之前是否有修改POST值的钩子?Yii2:在POST阶段
我知道有this解决方案,但我想这样做的价值模型最终甚至之前...
使用trim
validator。实际上它并不验证字段,但它修剪它们:
public function rules()
{
return [
['myfield', 'trim']
];
}
空白字段设置为null
,我会create a custom validator,一旦再次,它不验证,但如果该字段为空,将其设置到null
:
public function rules()
{
return [
['myfield', 'myValidator'],
];
}
public function myValidator()
{
if ($this->myfield == '')
$this->myfield = null;
}
}
我没有看到Yii的帮助。但你可以做到以下几点,你叫Yii::$app->request->post('somefield')
或Yii::$app->request->post()
前:
$_POST = array_map('trim', $_POST);
,或者如果你有嵌套表格数据:
array_walk_recursive($_POST, function (&$val, $index) {
$val = trim($val);
// maybe also:
// if(empty($val)) $val = null;
});
如果你想这对任何发布的数据,你可以将代码放在一个beforeAction处理程序(在控制器,模块或应用程序中)。我不认为这是一个好主意,但一如既往,这取决于你的情况。
你没看过我question.I说* *前值模型中的结束,并确认存在 - 甚至当我用'$ APP->请求 - >后(“somefield”)'...! – TheStoryCoder
我知道,但我认为,加载它们来使我们这些验证器是最干净的解决方案。这是我的建议,不是唯一有效的解决方案 – gmc