簡體   English   中英

有沒有辦法在CakePHP日期表單輸入中設置默認日期?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM