Ah! Sabia que tinha uma forma melhor de fazer ^^
Ah! Sabia que tinha uma forma melhor de fazer ^^
Ric, seu código está muito legal, porém estou tendo problemas com campos datetime.
Tenho dois campos data/hora que, quando tento preencher, ficam com o valor 1969-12-31. Porém, utilizei o seu código com campos date e funciona perfeitamente.
Tem idéia do que pode estar errado?
protected function beforeSave(){
foreach($this->tableSchema->columns as $columnName => $column){
if ($column->dbType == 'date'){
$this->$columnName = date('Y-m-d', CDateTimeParser::parse($this->$columnName, Yii::app()->locale->dateFormat));
}elseif ($column->dbType == 'datetime'){
$this->$columnName = date('Y-m-d H:i:s', CDateTimeParser::parse($this->$columnName, Yii::app()->locale->dateFormat));
}
}
return true;
}
Abraços!!!
O motivo exato eu não sei mas creio que ele deve estar assumindo o horário zero, que no meridiano de greenwich é 1970-01-01 e como estamos a menos 3 horas de greenwich o horário zero aqui é 1969-12-31 21:00.
imprime o valor com as horas e confere se é isso.
Scoob, realmente está com problemas em datetime.
A parte do beforeSave em datetime deveria estar da seguinte maneira:
CDateTimeParser::parse($mydate,
strtr(Yii::app()->locale->dateTimeFormat,
array("{0}" => Yii::app()->locale->timeFormat,
"{1}" => Yii::app()->locale->dateFormat))));
Porém, acabo de notar algo que acho que é um bug no Yii!
A documentação do CDateTimeParser diz que o formato para horas é h ou hh (minusculo).
Porém, o formato no arquivo de locale está HH (em maiusculo).
O CDateFormatter SOMENTE reconhece a hora se for com o HH. u seja, temos aí uma incoerência. Não consigo alterar um sem afetar o outro. Vou relatar esta situação ao Qiang. Porém, ele é meio cabeça-dura e nao sei bem no que vai dar isso. Aguardem.
OK, muito obrigado a todos,
Ficamos então no aguardo, Ric,
Abraços!!!
:>)
É o seguinte: Alertei na seção "Bug Reports", e fui avisado que alguém já tinha reportado o mesmo problema, que foi corrigido apenas há dois dias atrás.
Como estamos em 31 de agosto, amnhã ou depois deve sair uma nova versão do Yii, então a aguardarei com a correção do CDateTimeParser e postarei o codigo completo para vcs.
Abraço!
beleza, Ric, obrigado!!
Abraços!
Extensão corrigida e atualizada:
i18n-datetime-behavior 1.1
Requer Yii 1.0.9
Desculpem a demora
Valeu mesmo, Ricardo!!!! Muito obrigado!! É uma gentileza sua que nos traz uma funcionalidade muito importante e que valeria a pena esperar o tempo que fosse necessário!!
Abração!!
Olá, pessoal.
Estou tendo problemas com campos date também. Deixe-me explocar como andam as coisas por aqui:
Na tabela (mysql), tenho um campo DATE (dt_nascimento).
Criei usando o yiic o MODEL e o CRUD. Fiz umas brincadeiras com activeDropDownList para começar a melhorar os formularios.
Me deparei com um campo DATE. De cara, fui pro google e achei este topico. Adicionei o trecho de código (metodos beforeSave e afterFind) no arquivo do modelo da classe que possui o campo data de nascimento.
Com isto ele alterou a data para "Dec 31, 1969" (quando salvo qualquer data).
Tentei usar o i18n-datetime-behavior mas não sei se estou procedendo corretamente. Existe o arquivo br na pastinha do framework. Mas continua a mesma coisa…
Eu acredito que falta configurar o locale.
Em protected/config/main.php configure a propriedade ‘language’ para ‘pt-br’ e '‘sourceLanguage’ para ‘pt-br’ (nunca lembro qual das duas é, então altere as duas, rsrs)
Verifique na pasta yii/framework/i18n/data se há o arquivo pt_br.php. Se nao houver, crie a partir do arquivo pt.php.
Amigos,
Na minha tabela também tenho um campo date, mais quando clico para inserir, a data vai ‘0000-00-00’ estou usando o
<?php $this->widget('zii.widgets.jui.CJuiDatePicker', array(
'model'=>$model,
'name' => 'req_saidaprev',
'options' => array(
'showAnim' => 'fold',
),
'theme' => 'redmond',
'value' => date('Y/m/d'),
'language' => 'pt-BR',
'htmlOptions' => array(
'size' => 10,
),
));
Alguem pode me informar porque está acontecendo este erro?
Agradeço a todos…
Adriano
Quais datas vc está tentando?
Galera, o lance das datas que são gravadas incorretamente é por causa do formato que é passado ao atributo do model no momento da gravação.
As datas devem respeitar o formato AAAA-mm-dd.
No caso do CJuiDatePicker, para integrar com o I18nBehavior, use o array "options", igual eu fiz aqui:
http://www.yiiplayground.cubedwater.com/index.php?r=UiModule/jui/ziiDatePicker
O ‘value’ deveria ser obtido do valor do atributo. Exemplo
'value' => $model->projectDateStart
E para exibir corretamente em pt_BR
'options' => array(
'dateFormat'=>'dd/mm/yy',
Estou sem os códigos que utilizo aqui, mas assim que voltar pra casa disponibilizo a forma que estou usando aqui para ver se ajuda.
Abraços!
Aliado ao i18n deveria funcionar
Obrigado amigo…já conseguir desvendar o mistério. Agora estou querendo que todas as vezes que o usuário visualize a grid, ele a veja por ordem de nome por exemplo. Como fazer isto?
Agradeço a todos.
Adriano Silva
Adriano, no seu model você pode declarar o defaultScope, assim:
public function defaultScope(){
return array(
'order'=>'nome ASC',
);
}
Isto vai ordenar não somente a grid, mas qualquer consulta que utilize o model por padrão.
Abraços!
Caro Júnior,
Muito obrigado novamente pela ajuda. Foi excelente.
Sds,
Adriano Silva
[font="Arial Black"][/font][size="2"][/size]Caros Amigos,
Em minha aplicação tenho duas tabelas, uma requisição outra atendimento, como fazer para que quando o campo KmInicial da tabela atendimento da tabela atendimento for digitado algo, automaticamente o campo Status da tabela requisição seja alterada para ‘EM ANDAMENTO’. E quando o campo KmFinal da tabela atendimento for diferente de NULL, o Status de requisição seja ‘CONLUIDO’. E também como comparar números inteiros, KmInicial não pode ser maior que KmFinal. Como posso fazer pra resolver esses enigmas?w
Agradeço a todos.
Adriano Silva
Junior,
Como faço pra clicar em um button na grid e automaticamente o id desta linha ir para outro campo em outra tabela.
Sds,
Adriano Silva
Dá um look aqui
http://www.yiiframework.com/wiki/106/using-cbuttoncolumn-to-customize-buttons-in-cgridview/
Abraços!!