使用相关模型数据进行自动化

时间:2011-03-18 00:12:17

标签: cakephp

我遇到了自动化和相关模型数据的问题。我有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');

为什么会这样?有人可以帮帮我吗?

1 个答案:

答案 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