1

テンプレートにフィールドを追加し続けるか、最終フィールドを投稿してからインデックス ページに移動するオプションを提供するページがあります。ユーザーがテンプレートを作成すると、フィールドが作成されます。はtemplate.id入れられfield.template_idますが、ユーザーが別のフィールドを追加することを選択すると、失われfield.template_idます。

これが私の関数のコードです

function add($last=null){

    $this->set('title_for_layout', 'Create Fields');
    $this->set('stylesheet_used', 'homestyle');
    $this->set('image_used', 'eBOXLogoHome.png');
    $this->layout='home_layout';

        //retrieve Account Id of current User       
        $accountid=$this->Auth->user('account_id');


        $this->set('accountid', $accountid); 

    if($this->request->is('post'))
    {

    $this->Field->create(); 

    if ($this->Field->save($this->request->data))
    {   
        if($this->request->data['submit'] == "type_1") 
            {

                $last=$this->Field->read('template_id');
                $this->Session->setFlash('The field has been saved');  
                $this->redirect( array('controller' => 'fields','action' => 'add', $last));
            } 
            if($this->request->data['submit'] == "type_2") 
            { 
                $this->Session->setFlash('The template has been saved'); 
                $this->redirect( array('controller' => 'templates','action' => 'index'));
            } 


    }
    else
    {
        $this->Session->setFlash('The field could not be saved. Please, try again.'); 
    } 
 }
     $this->set('accounts', $accounts); 
     $this->set('last', $last); 


  }

} 

私が抱えている問題は、ユーザーがクリックtype_1してページをリロードしたときに、それをつかんtemplate_idで挿入しないことですfield.template_id

4

1 に答える 1

0

あなたのコードによると、フォームが add() メソッドに投稿されるたびに $last を見つけているようです。このフィールド検索条件を の外側に移動if($this->request->is('post'))すると、完了します。

read メソッドはモデルの data および id プロパティに保存されている情報を上書きするため、この関数を一般的に使用する場合、特に beforeValidate や beforeSave などのモデル コールバック関数で使用する場合は、十分に注意する必要があります。通常、find 関数は read メソッドよりも堅牢で使いやすい API を提供します。

http://book.cakephp.org/2.0/en/models/retriving-your-data.html#model-read

于 2012-08-21T09:01:15.450 に答える