我有一个页面,可以选择继续向模板添加字段或发布最终字段,然后转到索引页面。当用户创建模板时,他们将创建一个字段。 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
答案 0 :(得分: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