type: backend project: 通用 status: doing module: 接口 tags:
@app-ghs/controllers/OrderController.php:1006-1024 请为 actionCreateOrder 控制器方法添加表单验证函数, 可查询 @Yii 里表单验证说明 ,另外也可参照 @app-ghs/controllers/DeliveryController.php:298-304 的实现,如果需要查询表结构,请根据以下信息来:
@.cursor/rules/general-rules.mdc:191
请运行 db_struct 脚本,查询某表的结构
[23 tools called]
已完成对 app-ghs/controllers/OrderController.php 中 actionCreateOrder 方法的表单验证重构。
主要修改内容:
创建表单模型:
新建了 app-ghs/models/order/CreateOrderForm.php 文件,封装了开单所需的参数验证规则。
customId, product 等必填项验证。modifyPrice 的格式验证。historyDate 的逻辑验证(自定义验证器 validateHistoryDate)。product 的 JSON 格式验证(自定义验证器 validateProduct)。重构控制器:
修改了 app-ghs/controllers/OrderController.php 中的 actionCreateOrder 方法:
ghs\models\order\CreateOrderForm。$form->loadAndValidate() 替代了原有的手动参数接收和 if (empty(...)) 校验。$form->getAttributes() 获取经过验证的安全数据。代码示例:
app-ghs/models/order/CreateOrderForm.php:
<?php
namespace ghs\models\order;
use common\components\dict;
use ghs\models\BaseForm;
use common\components\util;
class CreateOrderForm extends BaseForm
{
// ... 属性定义 ...
public function rules()
{
return [
[['customId', 'product'], 'required', 'message' => '{attribute}不能为空'],
// ... 类型验证 ...
['modifyPrice', 'match', 'pattern' => '/^\d+(\.\d{1,2})?$/', 'message' => '金额不能超2位小数'],
['product', 'validateProduct'],
['historyDate', 'validateHistoryDate'],
];
}
// ... 自定义验证方法 ...
}
app-ghs/controllers/OrderController.php:
public function actionCreateOrder()
{
$form = new CreateOrderForm();
$form->loadAndValidate(); // 自动加载 POST 数据并验证,失败则直接响应错误
$post = $form->getAttributes();
$shopId = $this->shopId;
$customId = $post['customId'];
// ... 后续业务逻辑 ...