我使用Yii2创建网站。有一种叫做Contact Form的模型,如下所示:自定义规则验证在Yii2中不起作用Contact Form扩展模型
class ContactForm extends Model
{
public $name;
public $email;
public $subject;
public $body;
public $response;
public $response2;
public function rules()
{
return [
[['name', 'email', 'subject', 'body'], 'required'],
['email', 'email'],
['response', function ($attribute, $params)
{
$this->addError($attribute, 'Wrong response 1');
}, 'skipOnError' => false],
['response2', 'validresponse2'],
];
}
public function validresponse2($attribute, $params) {
$this->addError($attribute, 'Wrong response 2');
}
}
有2个属性(响应和响应2)具有自定义验证。
这两个自定义验证都不起作用。他们根本没有弹出错误信息。当我把回声“ASD;模具();?这些功能里面,他们并没有太死
是我的规则设置错了,我已经通过其他的问题,但没有运气搜索
UPDATE。
这是我如何验证表单在我的控制器
$model = new ContactForm();
$model->subject = "New Message";
if (isset($_POST['ContactForm'])) {
$model->attributes = $_POST['ContactForm'];
$model->response = "";
if ($model->validate()) {
echo "validated successfully";
die();
}
}
而且它总是成功验证
您是否期待这在客户端或服务器端工作?因为它在客户端不起作用。 – Bizley
它是服务器端,我已经在ActiveForm中将enableClientValidation设置为false –
并且您是否有表单中这些属性的字段,以便可以显示消息?如果是这样 - ActiveFields或HTML输入标签? – Bizley