【问题标题】:CakePHP 3: Hidden DateTime input field is not accepting dateCakePHP 3:隐藏的 DateTime 输入字段不接受日期
【发布时间】:2015-11-18 14:58:06
【问题描述】:

我的数据库中有一个名为start_time 的日期时间字段,我希望在用户执行特定操作时使用当前日期时间进行更新。我还希望这个字段隐藏在编辑视图中。

我在编辑视图中尝试了表单中的多种组合,并阅读了其他一些similar questions,但它不起作用(或者我不完全理解其他帖子)。

我尝试过的一些组合示例包括:

echo $this->Form->hidden('start_time', ['value' => date('Y-m-d H:i:s')]);
echo $this->Form->input('start_time', ['type'=>'hidden','value' => date('Y-m-d H:i:s')]);

如果我离开echo $this->Form->input('start_time') 的烘焙表单视图,我会看到在 HTML 中创建了单个 [年]、[月]、[日] 选择选项,只是想了解是否需要添加 6 个隐藏的表单选项涵盖 start_time[year]、start_time[month] 等...涵盖 MYSQL 日期时间格式的所有 Y-m-d H:i:s 字段...

感谢任何帮助。 谢谢!马克

【问题讨论】:

  • "not accepting" 不是一个非常精确的问题描述。到底发生了什么?与链接问题中的相同,即在创建/修补实体后,值最终为 null?
  • 对不起,数据被保存为NULL 所以是的,同样的事情发生在链接的问题中。我已尝试将以下内容添加到我的视图 use Cake\I18n\Time; $now =new Time(date('Y-m-d H:i:s'); echo $this->Form->input('start_time', ['type'=>'hidden','value' => $now]); 以及添加该帖子中详述的 beforeMarshal 函数,但它仍然保存为 NULL。
  • 我让它在我需要的时候工作了,谢谢你的帮助和其他帖子。 use Cake\I18n\Time; Time::setToStringFormat('yyyy-MM-dd HH:mm:ss'); $now = Time::now(); echo $this->Form->input('start_time', ['type'=>'hidden','value' => $now]);
  • 使用Time 格式化理论上应该可以工作,以防它与链接问题中的问题相同,因为它将使用与编组阶段的解析器相同的格式。
  • 在这种情况下,通常不需要使用 setToStringFormat,理论上传递 Time::now() 作为值应该已经这样做了。

标签: cakephp cakephp-3.0


【解决方案1】:

我的问题的解决方案实际上在answer found here 中。基本上将 beforeMarshal 调用添加到我的 [mymodel]Table.php 中,一旦我正确执行此操作,有效的日期时间格式就会添加到我的数据库字段中。

抱歉有些重复的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 2021-09-05
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 2019-05-12
    相关资源
    最近更新 更多