【问题标题】:Cakephp date automagicCakephp 日期自动
【发布时间】:2012-11-19 20:28:08
【问题描述】:

我有以下代码:

echo $this->Form->input('date', array(
        'label' => __('Date')
    )
);

生成一个select 代表年,一个代表月,一个代表日。我想要一个输入文本而不是 select 我可以输入所有日期。所以,我已经做到了:

echo $this->Form->input('date', array(
        'label' => __('Date'),
        'type' => 'text'
    )
);

表单有效但验证无效,我无法在 Controller 获得正确的数据(Cake 的“自动”),但找不到问题所在。

【问题讨论】:

    标签: cakephp cakephp-2.0


    【解决方案1】:

    如果您尝试验证该值是否为日期,请在模型中使用它:

    public $validate = array(
       'your_date_column' => array(
               'rule'       => 'date',
               'message'    => 'Enter a valid date'
        )
    );
    

    【讨论】:

      【解决方案2】:

      当你像这样使用表单助手时:

      $this->Form->date('demo', array('type' => 'date'));
      

      生成的日期数据将以这种格式在控制器中接收:

      $this->request->data['Model_name']['demo']['month'];
      $this->request->data['Model_name']['demo']['day'];
      $this->request->data['Model_name']['demo']['year'];
      

      如果你使用这样的文本框:

      $this->Form->date('demo', array('type' => 'string'));
      

      你会得到这样的约会:

      $this->request->data['Model_name']['demo'];
      

      我不知道您想如何获取日期或如何将其存储在数据库中,但是当您从一种类型更改为另一种类型时必须考虑到这一点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多