【问题标题】:validation not working upon click submit in Yii2 Php Framework在 Yii2 Php 框架中单击提交时验证不起作用
【发布时间】:2022-07-15 01:12:13
【问题描述】:

我创建了一个简单的表单,在模型中声明了简单的规则,但是当我尝试提交时,它不起作用,我也没有遇到错误。预期的输出应该是会话闪存,但在我的情况下没有发生任何事情

这是我的控制器

public function actionCustomer()
{
    $model = new CustomerForm;
    if($model->load(Yii::$app->request->post()) && $model->validate())
    {
        Yii::$app->session->setFlash('success','you entered it correctly');
    }
    return $this->render('customerForm',['model'=>$model]);
    

}

这是我的模特

<?php
   namespace app\models;
   use yii\base\Model;

   class CustomerForm extends Model
   {
   public $name;
   public $email;

    public function rules()
    {
       return [
           [['name', 'email'], 'required'],
           ['email', 'email'],
     
        ];
    }

}

这是我的看法

            <?php

        use yii\helpers\Html;
        use yii\widgets\ActiveForm;


        ?>

        <?php

            if(Yii::$app->session->hasFlash('success')){
                echo Yii::$app->session->getFlash('success');
            }
        ?>

        <?php $form = ActiveForm::begin(); ?>
        <?= $form->field($model,'name'); ?>
        <?= $form->field($model,'email'); ?>
        <?= Html::submitButton('Submit',['class'=>'btn btn-success']); ?>

【问题讨论】:

  • 规则第二行看不懂,好像不太对。只保留所需的行。
  • @Skatox 第二行是正确的。它将内部EmailValidator 应用于email 字段。

标签: yii2 yii2-basic-app yii2-model yii2-user yii2-validation


【解决方案1】:

将验证方法更改为[['email'], 'email'],因为您需要在第一个参数中发送数组中的字段。然后将验证规则指定为第二个参数。

这将是最终结果:

<?php
   namespace app\models;
   use yii\base\Model;

   class CustomerForm extends Model
   {
   public $name;
   public $email;

    public function rules()
    {
       return [
           [['name', 'email'], 'required'],
           [['email'], 'email'],
     
        ];
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-06
    • 1970-01-01
    • 2016-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    相关资源
    最近更新 更多