CakePHP表单输入未应用验证

CakePHP表单输入未应用验证,php,forms,validation,cakephp,Php,Forms,Validation,Cakephp,我似乎无法理解为什么我的表单没有应用模型中定义的验证。有什么帮助吗 \app\View\querys\View.ctp: <?php echo $this->Form->create('Enquiry', array('action'=>'email','novalidate' => true)); echo $this->Form->input('message', array ('type' => 'textarea', 'class'=>

我似乎无法理解为什么我的表单没有应用模型中定义的验证。有什么帮助吗

\app\View\querys\View.ctp:

<?php
echo $this->Form->create('Enquiry', array('action'=>'email','novalidate' => true));
echo $this->Form->input('message', array ('type' => 'textarea', 'class'=>'form-control'));
echo $this->Form->hidden('email', array ('value'=> $enquiry['Enquiry']['email']));
?>

\app\Model\Enquiry.php

<?php
App::uses('AppModel', 'Model');

class Enquiry extends AppModel {
public $actsAs = array('Acl' => array('type' => 'requester'));

public function parentNode() {
return null;
}

public $validate = array(
'message' => array(
'notEmpty' => array(
'rule' => array('notEmpty'),
'message' => 'Please enter your enquiry',
'allowEmpty' => false,
)
),
);

public $belongsTo = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'user_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
}
<?php
App::uses('AppController', 'Controller', 'Network/Email');

class EnquiriesController extends AppController {

public $helpers = array('GoogleMap','Html','Form','Session');   //Adding the helper
public $components = array('Paginator','Email','Session');
public function email($id, $dest=null){

if ($this->request->data) {
//Admin reply enquiry email
$Email = new CakeEmail('default');
$Email->config('default');
$Email->template('replyenq');
$Email->from(array('xxxx@gmail' => 'xxxx'))
->to($this->request->data['Enquiry']['email'])
->subject('xxxx has sent you a reply!')
->send();

//after sending, display a notification
$this->Session->setFlash(__('Reply enquiry has been successful.' , true), 'alert-box', array('class'=>'alert-success'));

//Redirect after email has been successful
return $this->redirect(array('action' => '../enquiries'));
}

else {

$this->Session->setFlash(__('Message was empty. Please ensure you enter a message'), 'alert-box', array('class'=>'alert-warning'));

return $this->redirect(array('action' => '../enquiries/view/'.$id));
}
}
}

数据通常仅在调用模型的
save()
方法时进行验证。您的控制器接收提交的数据并将其直接放入电子邮件中,这样就不会与查询模型进行交互

您需要从控制器手动调用
$this->inquiry->validates()
,并添加逻辑来处理结果


另请参见:

通常只有在调用模型的
save()
方法时才会验证数据。您的控制器接收提交的数据并将其直接放入电子邮件中,这样就不会与查询模型进行交互

您需要从控制器手动调用
$this->inquiry->validates()
,并添加逻辑来处理结果


另请参见:

谢谢您,先生-这就解决了问题。我不知道我怎么会错过“从控制器验证数据”的食谱部分,但谢谢你。谢谢你,先生-这就解决了问题。我不知道我怎么会错过“从控制器验证数据”的食谱部分,但谢谢你。