我是非常新的cakephp我试图验证联系表单。我需要在模型中没有数据库表的验证。但它不是work.code,我使用如下所示
下面是代码:ContactsController.php
<?php
class ContactsController extends AppController {
var $uses='Contact';
public function index() {
// Placeholder for index. No actual action here, everything is submitted to the send function.
}
public function send() {
$this->Contact->set($this->data);
if($this->Contact->validates()) {
echo "hiiii";
}
}
}
----------------------------Model-----------------------
<?php
App::uses('AppModel', 'Model');
class ContactModel extends AppModel {
var $name = 'Contact';
var $useTable = false;
var $validate = array(
'name' => array(
'rule' => 'notEmpty',
'required' => true
),
'email' => array(
'rule' => 'email',
'required' => true
),
'message' => array(
'rule' => 'notEmpty',
'required' => true
)
);
}
-----------------------in view/Contacts/index.ctp-----------------------------
<?php
echo $this->Form->create('Contact', array('action' => 'Contacts/send'));
echo $this->Form->input('name');
echo $this->Form->input('email');
echo $this->Form->input('message',array('rows' => 3));
echo $this->Form->submit('Submit');
?>
答案 0 :(得分:1)
有一种方法可以在不使用模型的情况下进行验证,模型也可以用于表单,至少在CakePHP2中。
例如,我必须验证参数,我认为为每个需要参数的动作创建模型没有意义。
所以,我用过这个:
在控制器类声明之前
App :: uses('Validation','Utility');
在带有$ code param
的操作中功能检查码($ code){ ... 验证::字母数字($代码); ... }
答案 1 :(得分:0)
本文将为您提供所需的所有信息: http://www.dereuromark.de/2011/12/15/tools-plugin-part-2-contact-form/
特别是如何使用_schema来构建验证并形成简单的方法。
答案 2 :(得分:0)
$ this-&gt; Contact-&gt; save()应从关联模型调用验证。
public function send() {
$this->Contact->set($this->data);
if($this->Contact->save()) {
$this->Session->setFlash(__('Contact saved!'));
}
}