原文转自 IT技术擎
有的时候我们想对用户提交的数据进行二次处理。这个时候我们就需要用到model层里面的fields这个方法了
public function fields()
{
if (Yii::$app->getRequest()->getIsPost()) {//只有post的时候才处理字段数据 其他的时候按原来的数据来处理
return ["region_name" => function ()
{
$post = Yii::$app->getRequest()->post();
return "techqing_".$post['Region']['region_name'] ;
}
, "pingyin" => function ()
{
$post = Yii::$app->getRequest()->post();
return "py_".$post['Region']['pid'];
}
, ];
} else {
return parent::fields();
}
}
以上的代码表示在 当用户post提交数据的时候才会执行fields里面的操作。
操作的时候 就会处理两个字段
region_name 字段前面添加了techqing_ 前缀
pingyin 字段前面添加了py_ 前缀
这样模型层调用 toArray()方法
$model->toArray();
如果代码是
$pdata = $model->toArray();
print_r($pdata);
则会打印如下的内容
Array( [region_name] => techqing_area_name [pinyin] => pinyin_123)
还可以进去 其他的特殊的处理。