Есть ли способ установить дату по умолчанию в форме ввода даты CakePHP? - PullRequest
3 голосов
/ 13 мая 2011

У меня есть это:

<?php echo $this->Form->input('Schedule.0.end_date', array(
    'minYear' => date('Y'),
    'maxYear' => date('Y')+5
)); ?>

Я бы хотел установить дату по умолчанию, отличную от сегодняшней.Возможно ли это с помощью помощника по формам в CakePHP?

Я нашел сообщение, в котором показано, как это сделать с TIME, но попытка чего-то подобного, установив «день», «месяц», «год», ничего не делает.

Ответы [ 4 ]

13 голосов
/ 13 мая 2011

Этого можно добиться, используя параметр 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'
  ));
?>
5 голосов
/ 14 сентября 2015

Просто обновление для пользователей Cake 3. *: теперь для предварительной компиляции полей даты и времени необходимо использовать ключевое слово «по умолчанию»:

echo $this->Form->input('datetime', array(
  'label' => 'Date 2',
  'default' => '2015-09-10 06:40:00'
));
0 голосов
/ 30 апреля 2016

С 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')
)));
0 голосов
/ 16 апреля 2014

Проблема с использованием опции selected в помощнике формы, если вы отправляете форму, то отправленное значение будет перезаписано выбранным значением, поэтому, если страница перезагружается из-за ошибки или чего-то еще, то пользователь теряет то, что было отправлено.

Я предпочитаю устанавливать значение по умолчанию в контроллере, если оно еще не установлено, в противном случае оно будет заполнено последней отправкой.

В контроллере:

if (!isset($this->request->data['start_date']))
        $this->request->data['start_date'] = date('Y-m-d', strtotime('-1 month'));

Таким образом, при первой загрузке формы пользователю предоставляется желаемое значение по умолчанию, но если они передают форму один раз и возвращаются к ней, их выбранное значение все еще выбирается.

...