[英]Is there a way to set the default date in a CakePHP date form input?
我有這個:
<?php echo $this->Form->input('Schedule.0.end_date', array(
'minYear' => date('Y'),
'maxYear' => date('Y')+5
)); ?>
我想將默認日期設置為今天以外的其他日期。 CakePHP的表單助手是否可以實現這一點?
我找到了一篇文章,展示了如何使用TIME - 但通過設置“day”,“month”,“year”嘗試類似的東西什么也沒做。
您可以使用$this->Form->input();
的selected
參數來實現這一點$this->Form->input();
。 試試這樣:
<?php
echo $this->Form->input('datetime', array(
'label' => 'Date 1',
'selected' => array(
'day' => '',
'month' => '',
'year' => '',
'hour' => '',
'minute' => '',
'second' => ''
)
));
/* What's interesting... this will work aswell: */
echo $this->Form->input('datetime', array(
'label' => 'Date 2',
'selected' => '0000-00-00 00:00:00'
));
?>
只是Cake 3 *用戶的更新:現在為了預編譯datetime字段,必須使用'default'關鍵字:
echo $this->Form->input('datetime', array(
'label' => 'Date 2',
'default' => '2015-09-10 06:40:00'
));
在表單助手中使用'selected'選項的問題是,如果你提交表單,那么提交的值將被選中的值覆蓋,所以如果頁面由於錯誤或其他東西而重新加載,那么用戶會失去什么是原始提交。
我更喜歡在控制器中設置默認值(如果尚未設置),否則將由最后一次提交填充。
在控制器中:
if (!isset($this->request->data['start_date']))
$this->request->data['start_date'] = date('Y-m-d', strtotime('-1 month'));
這種方式在用戶第一次加載表單時,會向其顯示所需的默認值,但如果他們提交表單一次並將其返回給它,則仍會選擇其選定的值。
使用CakePHP 2.x,
echo $this->Form->input('end', array(
'selected' => array(
'day' => date('d'),
'month' => date('m'),
'year' => date('Y'),
'hour' => date('h'),
'min' => date('i'),
'meridian' => date('a')
)));
如果你想用英文單詞顯示月號:
$month = DateTime::createFromFormat('!m', date('m'));
$month->format('F');
echo $this->Form->input('end', array(
'selected' => array(
'day' => date('d'),
'month' => $month->format('F'),
'year' => date('Y'),
'hour' => date('h'),
'min' => date('i'),
'meridian' => date('a')
)));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.