2011-12-31 32 views
5

que tienen un conjunto de selecciona la fecha de nacimiento:CakePHP valores por defecto para seleccionar la fecha

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

y desea establecer los valores predeterminados a ser las palabras "Anual Mensual" en las selecciones.

he logrado hacer esto con el género con:

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

pero no ver cómo se hace esto con la fecha de entrada automagic ...

¿Alguien puede ayudar? Gracias

+0

¿Podría agregar algunas líneas de JS para agregar al comienzo del texto ? A menos que se modifique el asistente de formulario, no puedo pensar en una forma menos "hackosa". –

Respuesta

2

Si no les importa 2 líneas más, se puede intentar hacer esto?

<?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

Me da este error: 'Error fatal: tipos de operandos no admitidos en/Users/cameron/Sites/social/lib/Cake/View/Helper/FormHelper. php en la línea 1816' – Cameron

+0

@Cameron, puede ser que me faltan algunas llaves o quieres probar $ this-> Form-> year (....). – Mo3z

+0

@ Cameron, me disculpo que debería haber mencionado. Funcionaría solo para cake 1.3+ – Mo3z

13

Basta con añadir:

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

a su gran variedad de opciones.

Ese ejemplo mostrará la fecha actual. Si necesita tener una fecha estática, reemplácela según sea necesario. por ejemplo:

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

Obviamente para la fecha y hora, utilice:

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

o

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

+0

¿Qué pasa con el DÍA MES AÑO como en las palabras reales! – Cameron

+0

'seleccionado' es la palabra clave que estaba buscando, gracias por compartir :) –

2

he implementado así en cakephp 2.0 anteriormente

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) 
); 

se ha añadido después de 2,0 api de cakephp y 'seleccionado' atributo 'valor' es quitar.

El manual de Cakephp dice: El parámetro $ selected se eliminó de varios métodos en FormHelper. Todos los métodos ahora admiten una clave $ attributes ['value'] ahora que debe usarse en lugar de $ selected. Este cambio simplifica los métodos de FormHelper, reduciendo el número de argumentos y reduciendo la duplicación que $ selected ha creado. Los métodos efectuadas son:

FormHelper::select() 
FormHelper::dateTime() 
FormHelper::year() 
FormHelper::month() 
FormHelper::day() 
FormHelper::hour() 
FormHelper::minute() 
FormHelper::meridian() 
0

Cakephp conjunto seleccionado al valor vacío si los datos Fecha de solicitud correspondiente es nulo, por lo tanto, simplemente establecen a NULL antes de eco de los campos de entrada de fecha:

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

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

la valor vacío (en su caso "FECHA", "MES", "año" campos) será pre-seleccionado en el formulario de entrada

8

de esta manera funciona:

<?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' 
      ) 
     ) 
    ); 
?> 
+0

¡Agradable! Esto responde exactamente a la pregunta original (que también tuve) y lo hace sin cambiar a tres declaraciones separadas. – Voodoo

+0

Esta debería ser la respuesta aceptada. – user2340939

0

Esto es lo que actualmente funciona para mí en 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') 
    ) 

);

Esto es un poco más elaborado, le daría un valor predeterminado establecido en el primer día del mes actual. Los valores posibles para el año se encuentran entre los actuales y los 5 años siguientes, mostrados en orden ascendente.

Aún más completa:

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")) 
        ) 
      ); 

Aquí defecto es primero día de la próxima meses

2

Además, ¿está realmente seguro de lo que realmente quiere decir?

Parece que confunde el valor predeterminado y el valor vacío. Si configura el valor predeterminado como DAY MONTH YEAR usando 'seleccionado', su código no funcionará porque DAY MONTH YEAR no es una fecha válida. Usando

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

se parece a lo que está buscando, que invita al usuario a introducir una fecha.

Cuestiones relacionadas