Pergunta

Eu tenho um Showcase existente que hasOne Gallery. A galeria já existe com o conjunto foreignKey showcase_id para o valor adequado. A galeria tem um campo de texto que eu tento atualizar através do Showcase-controlador. O resultado que eu vejo é uma entrada Gallery extra, ao longo do original, em vez de uma atualização da entrada original.

O que estou fazendo de errado?

Meu Showcase-vista é o seguinte:

echo $form->create('Showcase', array('action'=>'update'));

echo $form->input('Showcase.id', array('type'=>'hidden', 'value'=>$showcase['Showcase']['id']));

echo $form->input('Gallery.fulltext', array('type'=>'textarea', 'between'=>'<br>', 'value'=>$showcase['Gallery']['fulltext']));

echo $form->submit('Submit text');

echo $form->end();

função Showcase-controlador Meu:

$uses = array('Showcase','Gallery')

function update(){

if(!empty($this->data)){

$this->Showcase->saveAll($this->data, array('validate'=>'first'));

}

}

O modelo Showcase $hasOne = 'Gallery' eo modelo $belongsTo = 'Showcase' Gallery.

é $this->Showcase->saveAll() a função adequada para usar aqui? Ou eu talvez precise atualizar a entrada Galeria dentro do controlador Gallery? Isso provavelmente trabalho, mas é parece tão un-elegante.

Foi útil?

Solução

Eu posso ver que você quer dizer por ser un-elegante, seria bom se ele percebeu que tinha uma relação hasOne e, portanto, atualizados qualquer registro existente.

No entanto actualmente no âmbito Acho que sua melhor opção seria adicionar echo $form->input('Gallery.id', array('type'=>'hidden', 'value'=>$showcase['Gallery']['id'])); à sua vista.

Como uma nota lateral. Na ação do controlador que está actualmente a definir $showcase se você em vez atribuí-la a $this->data então você não precisará sempre especificar 'value' => ... em suas entradas de formulário.

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