php - YII2 : two models form validation, 第二个模型需要依赖第一个模型输入

标签 php validation yii2 gii

我正在使用 YII2,高级模板,使用 gii 生成模型。

我创建了一个包含两个模型(AB)的表单,除了一条规则外,所有验证规则都在各自的模型中定义,下面的最佳实践是什么案件。

形式

模型 A 的输入字段。 两个输入字段和一个单选按钮 CATEGORY(YESNO)。都需要

模型 B 的输入字段。 需要三个输入字段,

四个额外的输入字段取决于CATEGORY单选按钮, 如果用户选中YES,则需要额外的字段;如果选中NO,则不需要额外的字段。

那么我该如何定义客户端和服务器端验证的规则呢?在哪个模型中?我想到的一个解决方案是创建一个混合模型并定义所有具有依赖性的规则

最佳答案

我遇到了同样的问题,我找到了这个解决方案。

例如,如果您的类别属性在模型 A 中并且它是"is",那么模型 B 中的项目属性应该是必需的。

对于这个例子:

模型 A.php:

class A extends \yii\db\ActiveRecord
{
    public $category;

    public function rules()
    {
        return [
            [['category'], 'safe'],
        ];
    }



}

B.php B 类扩展\yii\db\ActiveRecord

{
    public $item;
    public $category;

    public function rules()
    {
        return [
            [['item'], 'safe'],
            [['item'], 'required', 'when' => function($model) {
                return $model->category == 'yes';
            }]
        ];
    }       
}

在 Controller 中

$a = new A();
$b = new B();
if ($a->load(Yii::$app->request->post()) && $b->load(Yii::$app->request->post())) {
            $b->category= Yii::$app->request->post()['First']['category'];

            $isValid = $a->validate();
            $isValid = $b->validate() && $isValid;
            if ($isValid) {
                echo 'its valid';
            }


        }

关于php - YII2 : two models form validation, 第二个模型需要依赖第一个模型输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26668440/

相关文章:

yii2 - 如何在 IIS 上正确配置 web.config 以发布 YII2 Advanced

php - Laravel 5.2 中的数组验证

java - blob sql 类型的 Hibernate 验证问题

yii2 - Yii jui 日期选择器格式

widget - yii2 kartik-v/yii2-widgets 安装

Java 验证 GUI Netbeans

php - 如何匹配整个 html 元素,无论里面有什么,就像浏览器一样?

php - 使用两个按钮插入数据

javascript - 将 jQuery/JavaScript 代码添加到 php 文件

javascript - DROPZONE - 在文件上传期间处理 AJAX 请求中的 session 超时