Usando framework Yii, o que seria uma maneira certa para processar um atributo antes de exibi-lo usando chtml :: activeTextField ()

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

  •  19-09-2019
  •  | 
  •  

Pergunta

Say Eu tenho esta linha de código no modo de exibição.

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

start_time é um timestamp UNIX. Quando apenas exibi-lo em uma visão que eu posso aplicar funções como data () sobre ele. Onde devo aplicar a formatação quando estou exibi-lo em um formulário, usando a linha de código acima? (Este caso de marcas de tempo / datas pode ser especial, mas eu também estou interessado em como é que um vá sobre se não fosse uma data e eu só quero trabalhar com

"valor no banco de dados" <> "diferentes representações do valor em diferentes pontos de vista.

Graças =)

Foi útil?

Solução

Nós geralmente se estendem CActiveRecord::afterFind() para converter os dados em um formato e CActiveRecord::beforeValidate() legível para transformá-lo de volta.

Se precisar de mais do que um formato disponível em todos os momentos, você pode querer dar getters e setters do Yii uma tentativa.

Tendo ambos

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

permite que você coloque CHtml::activeTextField($model, 'fieldName') em seus pontos de vista. Obviamente, você manipular a coluna de banco de dados subjacente nesses métodos (aparentemente ele é chamado start_time no seu caso). Espero que isso ajude.

Outras dicas

Eu usei o chtml :: textField vez de chtml :: activeTextField assim:

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

Vou ver se isso funciona no longo prazo.

Da mesma forma, em vez de aplicar método data ali mesmo, eu poderia ter smth como $ model-> getSomeProcessedData (); Legal ..:]

IMO, afterFind () fazer você abrandar a sua pesquisa e eu não acho que beforeValidate () desempenhar qualquer papel em dados de exibição. Eu prefiro adicionando getttart_time () para a classe modelo para substituir o getter de valor start_time. Há o código de formatação executar somente quando você precisa exibir dados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top