【问题标题】:How do I allow null in a datetime field with a CakePHP form?如何在带有 CakePHP 表单的日期时间字段中允许 null?
【发布时间】:2013-10-15 21:04:53
【问题描述】:

我有一个数据库,其中包含字段start_datedatetime,必填)和end_datedatetime,可以为空)。我正在创建一个表单供用户使用 CakePHP 输入数据。我的表单包含

echo $this->Form->input('start_date');
echo $this->Form->input('end_date');

输出 6 selects(月-日-年时:分子午线),当前日期/时间已选择,因为数据类型为 datetime如果我希望用户能够为end_date 插入null(基本上不填写该字段),我该如何更改我的表单?

我真正想要的基本上是一个带有 jQ​​uery 日历弹出窗口的文本框,用于插入格式化的日期时间,因此如果他们愿意,他们可以将文本框留空。我不完全确定要寻找什么,我猜它在文档中的某个地方,但我只是从 CakePHP 开始(所以很抱歉,因为这可能是一个基本问题)。

【问题讨论】:

  • 您还必须在模型中的字段中指定 'allowEmpty' => true。

标签: jquery forms cakephp datepicker


【解决方案1】:

使用空键:

$this->Form->input('end_date', array('empty' => true));

'empty' => '-'

这将创建最终在数据库中为 NULL 的字段。

【讨论】:

  • 我最后会使用 jQuery datepicker,但这是解决我的问题的一个非常简单的方法,谢谢!
【解决方案2】:

您可以将 jquery datepicker 与文本框一起用于日期字段。

试试这样的

PHP

<?php  echo $this->Form->input('end_date', array(
              'type' => 'text',
              'label' => 'End Date',
              'class' => ' j-date',
              'div' => false
          ));
?>

您可以通过添加带有上述元素的类 j-date 来为每个日期字段添加 jquery datepicker

jQuery

<script>
      $(function() {
         $(document).ready(function() {
            $('.j-date').each(function() {
                $(this).datepicker({ dateFormat: 'yy-mm-dd', 
                                    changeMonth: true,
                                    changeYear: true
                                });
                });
            });
        });
    </script>

我希望这个解决方案对您来说是可行的。谢谢

【讨论】:

  • 完美。我猜这是我正在寻找的'type'=>'text'。之后很容易集成 jQuery。谢谢!
猜你喜欢
  • 1970-01-01
  • 2013-07-22
  • 1970-01-01
  • 2012-12-13
  • 1970-01-01
  • 1970-01-01
  • 2019-01-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多