Php 验证规则不起作用:Yii

Php 验证规则不起作用:Yii,php,yii,Php,Yii,我的webapp中有两个字段,并提供了验证规则,使其成为必需的。但当我提交表单时,即使字段为空,表单也会被提交 型号: public function rules() { return array( array('fname, mobile, address', 'required'), array('econtact, mobile', 'length', 'max'=>10), array('fname', 'length', 'max'=>40), array('lname',

我的webapp中有两个字段,并提供了验证规则,使其成为必需的。但当我提交表单时,即使字段为空,表单也会被提交

型号:

public function rules()
{
return array(
array('fname, mobile, address', 'required'),
array('econtact, mobile', 'length', 'max'=>10),
array('fname', 'length', 'max'=>40),
array('lname', 'length', 'max'=>25),
    array('subject, body', 'required'),
array('filename', 'file', 'types'=>'jpg, gif, png,pdf'),
}
控制器:

public function actionEmail()
{
$model=new Contactlist;
if(isset($_POST['Contactlist']))
{
$model->attributes=$_POST['Contactlist'];
if($model->validate())
{
require("class.phpmailer.php");
$mail = new PhpMailer;
$mail->IsSMTP();
$mail->SMTPSecure = "ssl";
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->SMTPSecure = true;
$mail->Username = 'from@gmail.com';
$mail->Port = '465';
$mail->Password = '****';
$mail->SMTPKeepAlive = true;
$mail->Mailer = "smtp";
$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPAuth   = true;
$mail->CharSet = 'utf-8';
$mail->SMTPDebug  = 0;
$mail->SetFrom('frm@gmail.com','from');
$mail->Subject = $_POST['Contactlist']['subject'];
$mail->AltBody = 'To view the message, please use an HTML compatible email viewer!';
$mail->MsgHTML($_POST['Contactlist']['body']);
$mail->Send();
}}}

指定的验证规则均无效。我尝试在模型的rules()方法中回显文本。这工作正常,这意味着“$model->validate()”仅将其重定向到rules()方法。但是我不明白这里出了什么问题,如果你能在你的控制器中为模型对象添加场景,在那里你创建了模型的对象

反而

$model=new Contactlist;

 $model=new Contactlist('contactus');
然后来到您的模型,为所需的规则添加场景

array('fname, mobile, address', 'required','on'=>'contactus'),
在这一切之后,请删除您最后一条必需的规则或添加其中任何一条,否则您必须为此创建新的场景


如果无法正常工作,请向我发送消息。

显示您的完整模型和完整操作电子邮件和视图。您如何模拟错误?也许他们只是没有编辑,请看一看。Thankshum可能会尝试在长度规则中将allowEmpty设置为false。这可能是一件小事,但为什么您有两个“必需”规则。将它们全部合并到一个规则中?e、 g.
array('fname,mobile,address,subject,body','required'),