Senhores,
Alguém já trabalhou com afterDelete e similares e tb com beforeDelete?
Poderiam dar uma palhinha? onde usar (controller ou view) melhores práticas, etc…
Muitíssimo grato, desde já!
Senhores,
Alguém já trabalhou com afterDelete e similares e tb com beforeDelete?
Poderiam dar uma palhinha? onde usar (controller ou view) melhores práticas, etc…
Muitíssimo grato, desde já!
Utilizo direto para campos do tipos monetário e data. Dê uma olhada em http://www.yiiframework.com/extension/i18n-datetime-behavior
Poderia postar alguns exemplos?
Este behavior implementa os métodos afterFind e beforeSave. Basta adicionar o behavior ao seu model, adicionado o seguinte método:
public function behaviors()
{
return array('datetimeI18NBehavior' => array('class' => 'ext.DateTimeI18NBehavior')); // 'ext' is in Yii 1.0.8 version. For early versions, use 'application.extensions' instead.
}
Na prática o que vai acontecer é que os seus campos DATE e DATETIME que são salvos no banco no formato YYYY-MM-DD serão transformados p/ DD/MM/YYYY após o find e retransformados p/ YYYY-MM-DD antes de salvar. Fica tudo transparente pra vc, não precisa usar nenhum tipo de conversão de date();
Interessante isso, esse tipo de filtro eu não sabia ou desconhecia.
Tem listagem dessas class?
Acho que no core do Yii só tem a http://www.yiiframework.com/doc/api/1.1/CTimestampBehavior.
Mas a extensão do Ricardo pra facilitar a questão de datas é outra (De grande ajuda, diga-se de passágem)
Vira e meche aparece algumas em alguma extensão, mas fazer a sua propria é bem simples. Eu fiz uma que uso nos projetos meus pra gerar id (no formato UUID) pros meus e é muito fácil.
O manual do Yii dá pouco destaque a estas funções que diria eu, são um dos pontos fortes deste framework.
NOTA ESPECIAL: SEMPRE retorne true ou (de preferencia), parent::metodo. Se voce nao retornar nada, o restante da execução será cancelado.
Vou tentar explicar como utilizo estas funções:
afterConstruct
Executado após a construção do objeto, utilizo para inicializar attributos do model, como situação, hora da inclusão (como CDbExpression), etc.
afterFind
Executado sempre que o model é recuperado do banco de dados. Momento ideal para inserir campos calculados e efetuar conversão de dados para output.
beforeValidate
Executado ANTES da validacao do model. Isto é útil para campos que precisam ser formatados adequadamente para que a validação funcione.
Ex: retirar a máscara de um campo CPF, de forma a validar somente os numeros do CPF
Ou seja, para campos que precisam de tratamento PARA a validação.
afterValidate
Executado APÓS a validacao. Momento para desconverter os campos convertidos pelo beforeValidate. No exemplo anterior, o CPF era convertido para ficar somente com numeros. Agora, aplica-se novamente a mascara para a correta exibição no formulario.
beforeSave
Executado ANTES de salvar, porém DEPOIS de validar. (É importante notar esta diferença, que pode influenciar seu resultado)
Aqui vc pode setar/converter atributos automaticos para serem salvos no banco (situações, datas timestamp, etc.)
afterSave
Executado APÓS o salvamento do model. Utilze para desconverter atributos ou então para salvar modelos relacionados (ex: salvar o model e em seguida salvar um log sobre a alteracao no model)
beforeDelete
Executado ANTES da exclusao do model. Momento ideal para apagar registros filhos associados ou mesmo até para barrar a exclusão por ter filhos associados, ou então para atualizar um registro pai (ex: exclusao de item de venda atualiza valor total da venda)
afterDelete
Executado APÓS a exclusao do model. Pode ser utilizado para gerar um log
Em relação a behaviors, não me estranha alguns passarem batido, visto que a propria documentação do Yii passa praticamente batida tambem por este tema…