Cakephp 创建具有嵌套关联的窗体
假设我有一个模型a、B和C,其中:Cakephp 创建具有嵌套关联的窗体,cakephp,Cakephp,假设我有一个模型a、B和C,其中: class A extends AppModel { public $hasOne = array( 'B1' => array( 'className' => 'B', ... ), 'B2' => array( 'className' => 'B', ... )
class A extends AppModel {
public $hasOne = array(
'B1' => array(
'className' => 'B',
...
),
'B2' => array(
'className' => 'B',
...
)
);
...
}
class B extends AppModel {
public $belongsTo = 'A';
public $hasOne = array(
'C' => array(
'className' => 'C',
...
)
);
...
}
class C extends AppModel {
public $belongsTo = 'B';
}
我希望允许用户编辑A的实例/行以及A.B1、A.B2、A.B1.C和A.B2.C的关联实例/行的字段。我知道我能行
echo $this->Form->create('A');
echo $this->Form->input('A.some_field');
echo $this->Form->input('B1.some_field');
echo $this->Form->input('B2.some_field');
...
echo $this->Form->submit();
echo $this->Form->end();
并使用saveAll保存请求,但如何引用A.B1.C和A.B2.C中的字段?我尝试了B1.C.some_字段和B2.C.some_字段,但没有成功。取决于您使用的蛋糕版本
从2.1开始,答案与以下内容相同/相似:
如果使用以下选项,则将以saveAll预期的格式生成数据:
echo $this->Form->create('A');
echo $this->Form->input('A.id');
echo $this->Form->input('B.0.some_field');
echo $this->Form->input('B.0.C.name');
echo $this->Form->input('B.1.some_field');
echo $this->Form->input('B.0.C.name');
...
echo $this->Form->submit();
echo $this->Form->end();
function edit($id) {
...
$success = $this->A->saveAll($data, array('deep' => true));
}