我已开始研究CakePHP以提高我的工作效率。问题是我遇到了一个小问题,这让我在一个多小时内被占用 - 当提交表单时,它没有经过验证。
即使我故意将这两个字段留空,它仍会保存并发出OK消息。
希望有人能帮助我重新开始。如果有人知道一个活跃的CakePHP论坛,我会很感激链接。
<?php
class GoodsController extends AppController {
var $name = 'Goods';
function index() {
$this->set('goods',$this->Good->find('all'));
}
function view($id = NULL) {
//list of fields+id, null meaning take all
$this->set('good',$this->Good->read(NULL, $id));
}
function add() {
//Is it not empty? Then lets go on and save the data
if(!empty($this->data)) {
$this->Good->Create();
if($this->Good->save($this->data)){
$this->Session->setFlash('Varen blev gemt succesfuldt');
//$this->redirect(array('action'=>'index'));
} else {
$this->Session->setFlash('Varen kunne desværre ikke gemmes, prøv venligst igen!');
}
}
}
}
?>
<h1>Add Post</h1>
<?php
echo $form->create('Good', array('action'=>'add'));
echo $form->input('headline_dk');
echo $form->error('headline_dk');
echo $form->input('text_dk');
echo $form->error('text_dk');
echo $form->end('Indsæt vare');
?>
class Good extends AppModel {
var $name = 'Good';
var $validate = array(
'headline_dk' => array(
'rule' => 'notEmpty',
'message' => 'Angiv venligst en titel'
),
'headline_dk' => array(
'rule' => array('between', 5, 255),
'message' => 'Titlen skal være mellem fem og 255 tegn'
)
'text_dk' => array(
'required' => true,
'message' => 'Angiv venligst en beskrivelse af varen'
)
};
答案 0 :(得分:1)
您为单个字段分配了多个验证规则,但在您的模型中,var $validate
代码有'headline_dk'
的两个分配...而应该看起来像这样:
var $validate = array(
'headline_dk' => array(
'headline-rule-1' => array(
'rule' => 'notEmpty',
'message' => 'Angiv venligst en titel'
),
'headline-rule-2' => array(
'rule' => array('between', 5, 255),
'message' => 'Titlen skal være mellem fem og 255 tegn'
)
)
);
这可能不是唯一的问题,但它可能导致验证不起作用。另请参阅this page in the documentation。
答案 1 :(得分:0)
$this->Good->create();
中的“创建”应为小写。
更新:尝试以下语法:
var $validate = array(
'headline_dk' => array(
'between' => array(
'rule' => array('between', 5, 255),
'message' => 'Titlen skal være mellem fem og 255 tegn'
)
)
);