Atribuir valor a um campo após o envio do formulário cakePHP
-
23-12-2019 - |
Pergunta
Eu tenho um modelo de Evento que em um banco de dados tem dois campos para armazenar o tempo de pausa, nomeadamente 'phour' e 'pmin'.Em um Evento de formulário de criação de eu ter campos de entrada de tipo de tempo que produzem a matriz a seguir depois que o formulário é apresentado:
array(
'Event' => array(
'pause' => array(
'hour' => '02',
'min' => '30'
),
'hours' => '3',
'minutes' => '30',
)
)
Eu preciso atribuir a pausa horas e minutos, de acordo com DB campos depois que o formulário é submetido, mas eu simplesmente não consigo fazê-lo funcionar.
Qualquer ajuda é muito apreciada.
Solução
Use sempre o 'beforeSave' () retornos de chamada em seu modelo para editar seus dados.
Ver Retornos De Chamada De Métodos
Com o exemplo de @jimmy-madom
public function beforeSave($options = array())
{
if (!empty($this->data[$this->alias]) {
$this->data[$this->alias]['phour'] = $this->data[$this->alias]['pause']['hour'];
$this->data[$this->alias]['pmin'] = $this->data[$this->alias]['pause']['min'];
}
return true;
}
Outras dicas
Na ação, chamada por seu formulário, use:
if (!empty($this->request->data['Event']) {
$this->request->data['Event']['phour'] = $this->request->data['Event']['pause']['hour'];
$this->request->data['Event']['pmin'] = $this->request->data['Event']['pause']['min'];
$this->Event->save($this->request->data);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow