Usando marco Yu, lo que sería una manera correcta para procesar un atributo antes de mostrarla usando chtml :: activeTextField ()

StackOverflow https://stackoverflow.com/questions/2437045

  •  19-09-2019
  •  | 
  •  

Pregunta

Decir que tengo esta línea de código en la vista.

<?php echo CHtml::activeTextField($model,'start_time'); ?>

hora_inicial es una marca de tiempo UNIX. Cuando acaba de mostrarlo en una vista puedo aplicar funciones como la fecha () en él. ¿Dónde debería aplicar el formato cuando estoy viendo en un formulario, mediante el uso de la línea de código anterior? (Este caso de marcas de tiempo / fechas podría ser especial, pero también estoy interesado en cómo uno va sobre si no era una fecha y sólo quiero trabajar con

  

"valor de la base de datos" <> "diferentes representaciones del valor en diferentes vistas.

Gracias =)

¿Fue útil?

Solución

Por lo general, extendemos CActiveRecord::afterFind() para convertir los datos en un formato y CActiveRecord::beforeValidate() legible por humanos para transformar de nuevo.

Si necesita más de un formato disponible en todo momento, es posible que desee dar a captadores de Yii y definidores de un intento.

Tener tanto

  • CActiveRecord::getFieldName() y
  • CActiveRecord::setFieldName($value)

le permite poner CHtml::activeTextField($model, 'fieldName') en sus puntos de vista. Obviamente, se manipula la columna subyacente base de datos en esos métodos (al parecer se llama hora_inicial en tu caso). Espero que esto ayude.

Otros consejos

He utilizado el chtml :: textField en lugar de chtml :: activeTextField como esto:

<?php echo CHtml::textField(get_class($model).'[start_time]', date('Y-m-d H:i', $model->start_time)); ?>

Voy a ver si eso funciona en el largo plazo.

De la misma manera en lugar de aplicar el método fecha de ahí, podría tener algo bajo como $ modelo-> getSomeProcessedData (); Cool ..:]

OMI, afterFind () te hacen ralentizar su búsqueda y no creo que beforeValidate () juega ningún papel en los datos de pantalla. Yo prefiero añadiendo getttart_time () en la clase de modelo para anular el getter de valor START_TIME. Allí tu código de formato sólo se ejecutan cuando se necesita para mostrar los datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top