验证规则不起作用:Yii

时间:2014-04-18 09:28:57

标签: 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', '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()方法。但我不明白这里出了什么问题

1 个答案:

答案 0 :(得分:0)

如果可以,请在您创建模型对象的控制器中添加模型对象的方案

相反

$model=new Contactlist;

 $model=new Contactlist('contactus');

然后来到您的模型并添加所需规则的方案

array('fname, mobile, address', 'required','on'=>'contactus'),

在此之后请删除您上次需要的规则或添加其中任何一个,否则您必须为此创建新方案。

如果没有工作,那就是给我留言。