2011-03-18 4 views
0

automagic 및 관련 모델 데이터에 문제가 있습니다. 저는 4 가지 모델을 가지고 있습니다 : Exercice, Ecriture, Ligne, Compte. Exercice hasmany Ecriture와 Ecriture hasmany Ligne와 Compte hasmany Ligne은 서로 다른 외래 키에 의해 두 가지 관계가 있습니다. 내 양식을 채우기 위해 automagic을 사용하고 싶습니다. (관련 모델 데이터가 포함 된 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 

) 

) 

) 

) 

: 그래서 $ this-> 데이터를 사용하여, 내가보기에이 배열을 제공 'Ecriture.0.enonce');

모든 것이 잘 작동합니다.

하지만 사용 seconde 수준에 액세스 할 수 없습니다 :

$ this-> 서식 -> 입력 ('Ecriture.0.Ligne.0.libelle');

왜 그렇습니까? 누군가 나를 도울 수 있습니까?

+0

질문이 확실하지 않습니다. 무엇이 문제입니까? – Leo

+0

죄송합니다. 질문은 실제로 목록 상자에있었습니다. 나는 그것을 지금 바꿨다. 제 질문은 두 번째 레벨에 상대적인 필드가 자동으로 채워지지 않는 이유입니다. – Vestrep

답변

0

다음을 시도해보십시오 : 당신이 볼 수 있듯이

$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');

을, 당신은을 사용하여 자동으로 (양식 필드의 경우) $this->data 배열을 채울 수있을 것입니다 다음과 같이 read()를 호출하십시오 : $this->data = $this->ModelName->read(null, $recordId). 더 많은 것을 here in the cookbook를보십시오.

+0

사실, 저는 모든 수준의 관계를 유지하기 위해 읽고 사용할 수 있습니다. 그러나 어떤 이유로 Cake는 첫 번째 레벨의 필드 만 채 웁니다. – Vestrep

+0

그런 다음 모든 필드가 첫 번째 레벨에 있도록 필드를 다시 배열하십시오. – YOMorales

관련 문제