我可以在没有formhelper的情况下使用Cakephp验证吗?
例如,我就像这样创建了模型,控制器和视图模型:
class KnowledgeBase extends AppModel {
public $useTable = 'corp_kb';
public $validate = array(
'kb_title' => array(
'rule' => array('minLength', '2'),
'required' => true,
'message' => 'min 2 char'
),
);
}
控制器:
class KnowledgeBaseController extends AppController
{
var $name = 'KnowledgeBase';
var $ext = '.php';
public $helpers = array ('Html', 'Form', 'Js');
function kb_fill()
{
$this->layout = 'ajax';
}
function kb_input()
{
$this->autoRender = false;
$this->KnowledgeBase->set($this->data);
if(!empty($this->data))
{
if($this->KnowledgeBase->validates())
{
debug($this->data);
}
else
{
}
}
else
{
echo "data empty";
}
}
查看“kb_fill”:
<form id="kb_frm" method="get" action="" >
<input type="text" name="data[Knowledgebase][kb_title]"/>
<button id="postbutton">Post !</button>
</form>
由于某种原因我使用ajax通过按钮id将帖子加载到kb_input,并且不能使用通常的方法。 cakephp验证无效,或者没有显示消息错误 如何在没有formhelper的情况下使用它?
答案 0 :(得分:0)
你已经到了一半。您的Controller中的方法$this->KnowledgeBase->validates()
只会返回true
或false
。要手动处理验证错误,您需要:
if ($this->KnowledgeBase->validates()) {
// it validated logic
} else {
// didn't validate logic
$errors = $this->KnowledgeBase->validationErrors;
}
从Validating Data from the Controller获取代码示例,我建议您查看它,因为您可能会找到有关如何通过Controller验证数据的更多信息。
答案 1 :(得分:0)
为了显示错误消息,我们需要将此错误方法放在表单助手中。 即。
<?php echo $this->Form->error('kb_title') ?>
如果你使用cakephp Formhelper
输入法,那么它默认会给出错误信息,就好像你使用任何静态html一样
你那么你必须使用表单助手的错误方法来显示错误信息。
<form id="kb_frm" method="get" action="" >
<input type="text" name="data[Knowledgebase][kb_title]"/>
<?php echo $this->Form->error('kb_title') ?>
<button id="postbutton">Post !</button>
</form>
您可以使用error
form helper
方法获取表单的验证错误,如果您不想使用此方法,那么您可以拥有
查看$validationErrors
视图属性here
因此您可以使用$this->validationErrors['Knowledgebase']['kb_title']