【发布时间】:2014-04-18 09:28:57
【问题描述】:
我的 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() 方法。但我不明白这里出了什么问题
【问题讨论】:
-
显示您的完整模型和您的完整操作电子邮件和视图。
-
如何处理错误?也许他们只是不玩
-
我已经编辑了,请看一下。谢谢
-
hum 可能会尝试在长度规则中将 allowEmpty 设置为 false
-
这可能是一件小事,但为什么你有两个“必需”的规则。将它们全部合并为一个规则?例如
array('fname, mobile, address, subject, body', 'required'),