我使用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