0

関連する2つのモデルがあり、追加ビューでIDフィールドを非表示フィールドとして設定して、追加ビューに表示されないようにします。非表示に設定すると、フォームは表示されません。提出しないでください。id値を非表示フィールドとして渡す方法はありますか?

これが私の追加ビューです

<?php echo $this->Form->create('ItQueryComment'); ?>
<?php echo __('Add It Query Comment'); ?>
<?php
echo $this->Form->hidden('it_query_id');
echo $this->Form->input('comment');
?>

<?php echo $this->Form->end(__('Submit')); ?>

ItQueriesコントローラーの関数を追加します

public function add() {
if ($this->request->is('post')) {
$this->ItQuery->create();
if ($this->ItQuery->save($this->request->data)) {
$this->Session->setFlash(__('The it query has been saved'));
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The it query could not be saved. Please, try again.'));
}
}
$itQueryTypes = $this->ItQuery->ItQueryType->find('list');
$this->set(compact('itQueryTypes'));
}

前もって感謝します

4

1 に答える 1

2

それらをビューフォームに追加せず、コントローラーに再度渡すだけです。

保存する前に、それらをデータ配列に追加してみてください。

if ($this->request->is('post')) {
    $this->ItQuery->create();
    // add the content before passing it on to the model
    $this->request->data['ItQuery']['it_query_id'] = $id;
    if ($this->ItQuery->save($this->request->data)) {
        ... 
    }
}

フォームはそれらについて知る必要はありません。そして、誰もそれらを読んだり、改ざんしたりすることはできません。

「デフォルト値–非表示」を参照してください。http://www.dereuromark.de/2010/06/23/working-with-forms/ _

于 2013-03-07T12:38:26.740 に答える