我遇到了自动化和相关模型数据的问题。我有4个模特:Exercice,Ecriture,Ligne,Compte。 Exercice hasmany Ecriture和Ecriture hasmany Ligne和Compte hasmany Ligne两种关系由不同的外键给出。我想使用automagic来填充我的表单。因此,使用$ this->数据,我将此数组提供给视图:
Array
(
[Exercice] => Array
(
[id] => 1
[theme] => marchandises
)
[Ecriture] => Array
(
[0] => Array
(
[id] => 1
[exercice_id] => 1
[numero] => 1
[enonce] => Quelle est la dincee?
[Ligne] => Array
(
[0] => Array
(
[id] => 1
[ecriture_id] => 1
[compte_debit_id] => 2
[compte_credit_id] => 1
[montant_debit] => 23
[montant_credit] => 23
[libelle] => Achat de marchandises
[student_id] => 1
[CompteDebit] => Array
(
[id] => 2
[nom] => achat marchandises
)
[CompteCredit] => Array
(
[id] => 1
[nom] => caisse
)
)
)
)
现在,如果我想访问第一级,我只需使用:
$这 - >形状配合>输入( 'Ecriture.0.enonce');
一切正常!
但是我无法使用以下方式访问seconde级别:
$这 - >形状配合>输入( 'Ecriture.0.Ligne.0.libelle');
为什么会这样?有人可以帮帮我吗?
答案 0 :(得分:0)
尝试以下方法:
在Controller中:
$this->data = array(
'Exercice' => array('column1' => 'value1', 'column2' => 'value2', etc.),
'Ecriture' => array(0 => array('column1' => 'value1', 'column2' => 'value2', etc.)),
'Ligne' => array(0 => array('column1' => 'value1', 'column2' => 'value2', etc.)),
)
正如您所看到的,我建议将相关模型的数据放在同一级别而不是嵌套在另一级别中。因此,通过此方法,您可以设置表单元素,如:$this->Form->input('Exercice.column1');
或$this->Form->input('Ecriture.0.column1');
顺便说一下,现在我考虑一下,你应该能够使用read()自动填充$this->data
数组(对于表单字段),如:$this->data = $this->ModelName->read(null, $recordId)
。查看更多here in the cookbook。