我正在创建一个跟踪各种组织签名的应用程序。我有一个简单的表单,我可以传递ID,因此它会自动选择正确的组织。 add的URL如下所示:
/signatures/add/3
表格效果很好。通过传递3或任何其他ID,它会自动选择正确的字段,因为在我的视图中我做了:
echo $form->input('organization_id', array('selected' => $this->passedArgs));
当用户忘记填写表单元素时,我遇到了我的问题。表单将用户返回到:
/signatures/add/
因此没有选择正确的组织。它将恢复为默认值1.关于如何保留参数的任何提示?
答案 0 :(得分:1)
我对蛋糕了解不多,但看起来形式的动作是/ signatures / add /
如果您将ID添加到表单操作,以便在视图中显示action =“signatures / add / {ID}”,那么它应该返回到该组织页面
答案 1 :(得分:0)
谢谢盖伦。你实际上指出了我正确的方向。我意识到我的表单想要保存组织的状态,但是当我这样做时我覆盖了它:
echo $form->input('organization_id', array('selected' => $this->passedArgs));
所以我现在所做的是:
if (!empty($this->passedArgs)) {
echo $form->input('organization_id', array('selected' => $this->passedArgs));
} else {
echo $form->input('organization_id');
}
它可以解决问题。
答案 2 :(得分:0)
将organization_id设置为所选值的正确方法是将其包含在控制器的数据数组中。例如
function add($organization_id)
if(!empty($this->data)) {
if($this->Signature->save($this->data)) {
$this->setFlash('Save successful')
$this->redirect(array('action' => 'index'))
} else {
$this->setFlash('Please review the form for errors')
}
}
if($organization_id) {
$this->data['Signature']['organization_id'] = $organization_id;
}
}
然后在你看来简单地把
echo $form->create('Signature', array('action' => 'add'))
echo $form->input('organization_id')
它会自动从控制器数据中插入organization_id值。