validation - CakePHP 验证不起作用

标签 validation cakephp

我是 cakephp 新手,我需要验证表单。

这是代码: Controller :

<?php
class TasksController extends AppController {
    var $name = 'Tasks';
    var $helpers = array('Html','Form','Session');
     public function index(){
     }
    function add_task()
    {
        if(!empty($this->data)) {
            //print_r($this->data);
            $this->Task->set($this->data);
            if ($this->Task->validates()) {
                // it validated logic
                //echo "ttt";
            } else {
                // didn't validate logic
                echo $errors = $this->Task->validationErrors;
            }
        }
    }
}
?>

型号:

<?php
    class Task extends AppModel
    {
        public var $name = 'Task';
        var $useDbConfig = 'travanco_erp';
        public var $useTable = 'tbl_tasks'; // This model uses a database table 'exmp'
        public var $validate = array(
                    'task_title_mm' => array(
                            'rule' => 'notEmpty',
                            'required' => true,
                            'message' => 'The title field is required'
                    ),
                    'task_description_mm' => array(
                            'rule' => 'notEmpty',
                            'required' => true,
                            'message' => 'The description field is required'
                    ),
                    'task_from_mm' => array(
                            'rule' => 'notEmpty',
                            'required' => true,
                            'message' => 'The from date field is required'
                    ),
                    'task_to_mm' => array(
                            'rule' => 'notEmpty',
                            'required' => true,
                            'message' => 'The to date field is required'
                    )
            );

    }
?>

这是 View :

<div class="employeeForm" style="width:64%; padding:10px 30%;"> 

            <?php echo $this->Form->create('test', array('class'=>'form'));?>
            <fieldset style="width:36em; padding:0px 0px;">
                    <div style="width:475px; font-family:Arial, Helvetica, sans-serif; font-size:16px; color:#333333; font-weight:bold; margin-left:20px; margin-top:10px;">Add Task</div>
                    <br/>
                <?php
                    /*echo $this->Form->input('task_ids_mm',        array(  'div'=>'frm_filed_new',
                                                                    'error' => array(   'wrap' => 'div',
                                                                                        'class' => 'formerror'
                                                                                    ),
                                                                    'label' => 'Task ID',
                                                                ));*/


                    echo $this->Form->input('task_title_mm',        array(  'div'=>'frm_filed_new',
                                                                    'error' => array(   'wrap' => 'div',
                                                                                        'class' => 'formerror'
                                                                                    ),
                                                                    'label' => 'Title',
                                                                ));


                    echo $this->Form->input('task_description_mm',  array(  'type' => 'textarea',
                                                                        'cols'=>60,
                                                                        'rows' => 5,
                                                                        'div'=>'frm_filed_new',
                                                                        'error' => array(   'wrap' => 'div',
                                                                                            'class' => 'formerror'
                                                                                    ),
                                                                        'label' => 'Description',
                                                                ));

                    echo $this->Form->input('task_from_mm',     array(  'div'=>'frm_filed_new','id'=>'task_from_mm','value'=>'',
                                                                    'error' => array(   'wrap' => 'div',
                                                                                        'class' => 'formerror'
                                                                                    ),
                                                                    'label' => 'From',
                                                                ));
                    echo $this->Form->input('task_to_mm',   array(  'div'=>'frm_filed_new','id'=>'task_to_mm','value'=>'',
                                                                    'error' => array(   'wrap' => 'div',
                                                                                        'class' => 'formerror'
                                                                                    ),
                                                                    'label' => 'To',
                                                                ));

                ?>  
                <br/>
                <?php echo $this->Form->button('Submit', array('type'=>'submit','escape'=>true)); ?>
            </fieldset>  
            <?php echo $this->Form->end(); ?>

        </div>

验证不起作用。

我的代码有什么错误? 我该如何解决这个问题?

编辑:

这是databse.php文件配置错误的错误。现在它已更正。并且print_r($errors)显示错误。但是没有显示在 View 页面中,我的意思是靠近文本框。

这是错误数组: Array ( [task_title_mm] => Array ( [0] => 标题字段为必填项 ) [task_description_mm] => Array ( [0] => 描述字段为必填项 ) [task_from_mm] => Array ( [0 ] => 起始日期字段为必填项 ) [task_to_mm] => 数组 ( [0] => 截止日期字段为必填项 ) )

如何将其放在文本框附近?

最佳答案

CakePHP 旨在自动验证模型并显示验证错误。自动验证在模型保存时运行。对于您的情况:

$this->Task->save($this->request->data);

上面将触发验证。无需运行: $this->Task->validates() - 如果这样做,您还必须自己负责显示验证错误。所以我认为你应该尝试:

<?php
class TasksController extends AppController {
  var $name = 'Tasks';
  var $helpers = array('Html','Form','Session');

  function add_task()
  {

    if ($this->request->is('post')) {
      // If the form data can be validated and saved...
      if ($this->Task->save($this->request->data)) {
         //saved and validated
      }
    }
  }
}
?>

关于validation - CakePHP 验证不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12382257/

相关文章:

验证期间发现的 iOS 问题 - 无效字符

regex - ngPattern 指令的问题

mysql - 为什么 count(id) 结果是 3 维数组?

php - 我可以将 Facebook 的 hiphop 与 Zend Framework、cakephp、symfony 等框架一起使用吗

mysql - cakephp 中的分页并查找所有结果

mysql - 将另一个 Controller 的另一个字段添加到数组中

arrays - 如何在Laravel 5.4中验证数组

javascript - 使用具有多种变体的 JavaScript 验证表单

asp.net-mvc-3 - EditorTemplate 的嵌套模型的 ASP.NET MVC3 条件验证

css - css 风格的 cakephp 分页结果的最佳方式是什么