我的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()方法。但我不明白这里出了什么问题
答案 0 :(得分:0)
如果可以,请在您创建模型对象的控制器中添加模型对象的方案
相反
$model=new Contactlist;
写
$model=new Contactlist('contactus');
然后来到您的模型并添加所需规则的方案
array('fname, mobile, address', 'required','on'=>'contactus'),
在此之后请删除您上次需要的规则或添加其中任何一个,否则您必须为此创建新方案。
如果没有工作,那就是给我留言。