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/retrieving-your-data.html#model-read

于 2012-08-21T09:01:15.450 回答