Closed GoogleCodeExporter closed 9 years ago
Boas,
Tens duas formas de o fazer.
Ou adicionas um evento antes da introdução de dados na bd, ou utilizas filters
Para utilizares filters
<code>
$grid->getForm(1)->getElement('data')->addFilter('oMeuFiltro');
</code>
Mais informações sobre filtros aqui:
http://framework.zend.com/manual/en/zend.form.elements.html#zend.form.elements.f
ilters
Para utilizares eventos
<code>
function aMinhaFuncao ($event)
{
$event->setParam('data',strtotime($event->getParam('data'),'Y-m-d'));#Muda data para o nome do campo
}
$grid->listenEvent('crud.before_insert','aMinhaFuncao');
$grid->listenEvent('crud.before_update','aMinhaFuncao');
</code>
Com os melhores cumprimentos,
Bento Vilas Boas
Original comment by bento.vi...@gmail.com
on 12 May 2011 at 12:37
Issue 656 has been merged into this issue.
Original comment by bento.vi...@gmail.com
on 12 May 2011 at 12:38
Olá Bento, como fazer para esta função ser callable?
$grid->listenEvent('crud.before_update','aMinhaFuncao');
function aMinhaFuncao ($event) {
$event->setParam('ani_dt_nasc',date('Y-m-d H:i:s',strtotime($event->getParam('ani_dt_nasc'))));
}
eu recebo o erro :
Message: aMinhaFuncao not callable
Stack trace:
#0 C:\xampp\htdocs\snp\library\Bvb\Grid.php(4332):
Bvb_Grid_Event_Dispatcher->connect('crud.before_upd...', 'aMinhaFuncao')
#1
C:\xampp\htdocs\snp\application\modules\admin\controllers\animalController.php(2
52): Bvb_Grid->listenEvent('crud.before_upd...', 'aMinhaFuncao')
#2 C:\xampp\htdocs\snp\library\Zend\Controller\Action.php(513):
Admin_AnimalController->listAction()
#3 C:\xampp\htdocs\snp\library\Zend\Controller\Dispatcher\Standard.php(295):
Zend_Controller_Action->dispatch('listAction')
#4 C:\xampp\htdocs\snp\library\Zend\Controller\Front.php(954):
Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Htt
p), Object(Zend_Controller_Response_Http))
#5 C:\xampp\htdocs\snp\library\Zend\Application\Bootstrap\Bootstrap.php(97):
Zend_Controller_Front->dispatch()
#6 C:\xampp\htdocs\snp\library\Zend\Application.php(366):
Zend_Application_Bootstrap_Bootstrap->run()
#7 C:\xampp\htdocs\snp\public\index.php(87): Zend_Application->run()
#8 {main}
Request Parameters:
array (
'module' => 'admin',
'controller' => 'animal',
'action' => 'list',
)
Obrigado
Alessandro Ferreira
Original comment by alessand...@gmail.com
on 12 May 2011 at 1:04
Boas,
Experimenta assim:
$grid->listenEvent('crud.before_update',array($this,'aMinhaFuncao'));
function aMinhaFuncao ($event) {
$event->setParam('ani_dt_nasc',date('Y-m-d H:i:s' , strtotime( $event->getParam('ani_dt_nasc'))));
}
Com os melhores cumprimentos,
Bento Vilas Boas
Original comment by bento.vi...@gmail.com
on 12 May 2011 at 1:13
Bento
Parou de dar o erro mas não insere nada na tabela.
Obrigado
Original comment by alessand...@gmail.com
on 12 May 2011 at 1:25
Bento
Não poderia ser por uma funcao de callback do form tipo
$form->setCallbackBeforeUpdate $callback ?
Se sim como poderia implementar isso?
Obrigado
Original comment by alessand...@gmail.com
on 12 May 2011 at 1:37
Boas,
O callback foi removido em favor de eventos.
Quando dizes que não inserir nada na tabela, não insere nenhum registo ou o
campo ani_dt_nas está em branco?
Com os melhores cumprimentos,
Bento Vilas Boas
Original comment by bento.vi...@gmail.com
on 12 May 2011 at 1:44
Olá Bento
Ele fica '0000-00-00'
Obrigado
Original comment by alessand...@gmail.com
on 12 May 2011 at 1:45
boas,
Desculpa lá, faz o seguinte.
function aMinhaFuncao ($event)
{
$values = $event->getParam('values');
$values['ani_dt_nasc'] = strtotime($values['ani_dt_nasc'],'Y-m-d H:i:s');
$event->setParam('values',$values);
}
Com os melhores cumprimentos,
Bento Vilas Boas
Original comment by bento.vi...@gmail.com
on 12 May 2011 at 1:54
Olá Bento,
Ficou do mesmo jeito : '0000-00-00'
Obrigado
Original comment by alessand...@gmail.com
on 12 May 2011 at 2:04
Boas,
Faz o seguinte:
function aMinhaFuncao ($event)
{
$values = $event->getParam('values');
echo "<pre>";
print_r($values);
die();
$values['ani_dt_nasc'] = strtotime($values['ani_dt_nasc'],'Y-m-d H:i:s');
$event->setParam('values',$values);
}
Com os melhores cumprimentos,
Bento Vilas Boas
Original comment by bento.vi...@gmail.com
on 12 May 2011 at 2:19
Olá Bento
continua da mesma forma e não printou(print_r) nada também.
Obrigado.
Original comment by alessand...@gmail.com
on 12 May 2011 at 10:35
Alessandro,
Não tenho estado mesmo nos meus dias.
Pensei que estivesses a utilizar o método before_inser e não before_update.
Nessa caso não é values, mas sim newValues
function aMinhaFuncao ($event)
{
$values = $event->getParam('newValues');
$values['ani_dt_nasc'] = strtotime($values['ani_dt_nasc'],'Y-m-d H:i:s');
$event->setParam('newValues',$values);
}
Com os melhores cumprimentos,
Bento Vilas Boas
Original comment by bento.vi...@gmail.com
on 12 May 2011 at 9:09
OK, deu certo usei o svn do proprio zend studio, só uma dívida a função ali
precisa estar dentro da Action mesmo, ou posso criar uma public function update
para chamar.
Original comment by thiagote...@gmail.com
on 16 May 2011 at 6:30
Boas,
Podes colocar a função onde quiseres.
Tens é que depois especificar o scope.
Imagina que tens um ficheiro com funções.
Fazes assim:
$grid->listenEvent('crud.before_update','aMinhaFuncao');
Mas se for um método tens que especificar em que classe está. No caso de
estar dentro da classe actual usas
$grid->listenEvent('crud.before_update',array($this,'aMinhaFuncao'));
Se estiver dentro de outra classe usas
$grid->listenEvent('crud.before_update',array('ONomeDaMinhaClasse','aMinhaFuncao
'));
Com os melhores cumprimentos,
Bento Vilas Boas
Original comment by bento.vi...@gmail.com
on 16 May 2011 at 6:36
Original issue reported on code.google.com by
alessand...@gmail.com
on 11 May 2011 at 5:45