CakePHP Значения по умолчанию для выбора даты - PullRequest
5 голосов
/ 31 декабря 2011

У меня есть набор выбора для даты рождения:

<?php echo $this->Form->input('Profile.dob', array('label' => 'Date of Birth'
                                    , 'dateFormat' => 'DMY'
                                    , 'minYear' => date('Y') - 100
                                    , 'maxYear' => date('Y') - 13)); ?>

и я хочу установить значения по умолчанию для слов "DAY MONTH YEAR" в выборках.

Iудалось сделать это с полом с:

<?php echo $this->Form->input('Profile.gender', array('label' => 'Gender', 'type' => 'select',
         'options' => array('Male'=>'Male','Female'=>'Female'),'empty'=>'Select Sex')); ?>

, но я не вижу, как это сделать с автоматическим вводом даты ...

Кто-нибудь может помочь?Спасибо

Ответы [ 7 ]

13 голосов
/ 31 декабря 2011

Просто добавьте:

'selected'=>date('Y-m-d')

к вашему массиву опций.

В этом примере будет показана текущая дата.Если вам нужна статическая дата, замените ее при необходимости.Например:

'selected'=>'2011-12-10'

Очевидно, для даты и времени используйте:

'selected'=>date('Y-m-d H:i:s')

или

'selected'=>'2011-12-10 11:13:45'

8 голосов
/ 17 сентября 2013

Так работает:

<?php 
echo $this->Form->input(
    'Profile.dob', 
    array(
        'label'         => 'Date of Birth',
        'dateFormat'    => 'DMY',
        'minYear'       => date('Y') - 100,
        'maxYear'       => date('Y') - 13,
        'empty'         => array(
            'day'       => 'DAY',
            'month'     => 'MONTH',
            'year'      => 'YEAR'
            )
        )
    ); 
?>
2 голосов
/ 19 августа 2015

Кроме того, вы действительно уверены, что имеете в виду?

Вы, похоже, путаете значение по умолчанию и пустое значение.Если вы установите значение по умолчанию DAY MONTH YEAR, используя 'selected', ваш код не будет работать, потому что DAY MONTH YEAR не является допустимой датой.Использование

'empty' => array(
  'day' => 'DAY',
  'month' =>'MONTH',
  'year' =>'YEAR'
);

выглядит как то, что вы ищете, предлагая пользователю ввести дату.

2 голосов
/ 02 апреля 2013

Я реализовал это следующим образом в cakephp 2.0

echo $this->Form->dateTime('dob', 'DMY','', array(
    'value'=>'1987-02-12',
    'empty'=>false,
    'label'=>'Date Of Birth',
    'minYear'=>date('Y')-60,
    'maxYear'=>date('Y')-15)
);

Атрибут 'value' был добавлен после 2.0 api cakephp, а 'selected' удалено.

В руководстве Cakephp сказано:Параметр $ selected был удален из нескольких методов в FormHelper.Все методы теперь поддерживают ключ $ attribute ['value'], который следует использовать вместо $ selected.Это изменение упрощает методы FormHelper, уменьшает количество аргументов и уменьшает дублирование, созданное $ selected.Методы воздействия:

FormHelper::select()
FormHelper::dateTime()
FormHelper::year()
FormHelper::month()
FormHelper::day()
FormHelper::hour()
FormHelper::minute()
FormHelper::meridian()
2 голосов
/ 31 декабря 2011

Если вы не возражаете против еще 2 строк, можете попробовать это сделать?

<?php
echo $this->Form->year('Profile.dob', date('Y') - 100, date('Y') - 13, array('empty' => "YEAR"));
echo $this->Form->month('Profile.dob', array('empty' => "MONTH"));
echo $this->Form->day('Profile.dob', array('empty' => 'DAY'));

?>
0 голосов
/ 19 августа 2015

Это то, что в настоящее время работает для меня в cakephp 2.5:

echo $this->Form->input('fecha_pos_fijacion', array(
    'label' => 'Fecha de fijación',
    'dateFormat' => 'DMY',
    'minYear' => date('Y'),
    'maxYear' => date('Y')+5,
    'orderYear' => 'asc',
    'selected' => date('Y-m-1')
    )

);

Это немного сложнее, оно даст вам значение по умолчанию, установленное на 1-едень текущего месяца.Возможные значения для года находятся между текущим и 5 годами вперед и отображаются в порядке возрастания.

Еще более полно:

echo $this->Form->input('fecha_transporte', array(
                    'label' => '',
                    'dateFormat' => 'DMY',
                    'minYear' => date('Y'),
                    'maxYear' => date('Y')+5,
                    'orderYear' => 'asc',
                    'selected' => date('Y-m-1', strtotime("+30 days"))
                    )
            );

Здесь по умолчанию 1-й день следующий месяц

0 голосов
/ 25 июля 2013

Cakephp устанавливает выбранное пустое значение, если соответствующие данные запроса даты равны нулю, поэтому просто установите его равным нулю, прежде чем выводить поля ввода даты:

$this->request->data['Profile']['dob'] = null;

echo $this->Form->month('Profile.dob', array('empty' => "MONTH"));
// do the same for year and day

пустое значение (в вашем случае "Поля ДАТА "," МЕСЯЦ "," ГОД ") будут предварительно выбраны в форме ввода

...