Zend Framework 1.12를 사용하여 여러 개의 양식이있는 페이지를 만듭니다. 단일 마스터 양식과 하위 양식을 사용합니다. 따라서 하나의 유효성 검사 코드 부분 만 있습니다. 이러한 하위 형식은 데이터베이스의 다른 테이블을 가리 킵니다. 목표는 해당 양식에 대한 데이터베이스의 행이있는 경우 양식에서 기본값으로 데이터베이스에서 값을 가져와 사용자가 해당 데이터를 변경할 기회를 제공해야한다는 것입니다. 그리고 데이터베이스에 행이 없으면이 양식의 입력이 db에 삽입됩니다. 처음에는 db에서 값을 가져 와서 폼 요소의 값으로 표시 할 수 있습니다. 내가 그것을 변경하고 나는 값이 페이지에 입력 (또는 수정)에 액세스 할 수 없습니다Zend Form, 요소에 기본값이있는 경우 입력 값을 사용할 수 없습니다.
$form->getValues();
으로 값을하려고 할 때, 난 그냥 다시 액세스에게 값을 기본값으로 형태 넣어 데이터베이스에. 이 양식은 항상 편집 할 수 있어야하며 여러 가지 종류의 데이터에 대해 여러 가지 양식이 있으므로 동일한 작업을 수행 할 수 있습니다. 나는 무엇을 잘못해야합니까? 어떤 생각?
이$masterform = new Application_Form_GeneralForm(); // a class which extends Zend_Form
$form1 = new Application_Form_SmallForm(); // a class which extends Zend_Form_Subform
$masterform->addSubform($form1, 'form1');
// so far, for form 1, no problem. My second form will be
// added to the masterform after this first form is submitted,
// which works fine.
$form2 = new Application_Form_AnotherSmallForm(); // a class which extends Zend_Form_Subform
$request = $this->getRequest();
if ($request->isPost()){
if ($generalform->isValid($request->getPost())) {
$form2->loadValues(); // the part that form elements are filled with data
// taken from db, a method defined in `AnotherSmallForm`
// class. Just assigning values to elements with `setValue()`
$form2->saveValues(); // Here is the problem, another method to save the
// current values to db. (defined in form class). I have to do this in this fragment of code, so i don't know to
// use which order (saveValues() and loadValues() methods' order)`
$masterform->addSubform($form2, 'form2');
}
}
가 그래서, 1 단계 : $의를 Form1은 $ masterform에 추가됩니다
(추가) 여기 내 컨트롤러 코드의 관련 부분을 요약 한 것입니다.
두 번째 단계 : $ masterform이 제출되었습니다 (이제 $ form1 만 포함). 그러면 $ form2가 $ masterform에 추가됩니다. 추가되기 전에 $ form2의 값이 양식 요소 내에로드됩니다.
3 단계 : $ masterform이 제출되었습니다 ($ form1 및 $ form2도 마찬가지 임). $ form2에 값이 변경되면이 제출을 통해 db에서 값을 업데이트해야합니다.
이 코드의 목표는 세 번째 단계로 인해 달성 할 수 없었던 것입니다.
더 많은 컨트롤러 코드가 필요합니다. 양식에 의해 제출 된 값은 양식 객체에 어떻게 도달합니까? –
db에서 기본값은 어디에 설정합니까? 입력 값을 겹쳐 쓰고 순서를 변경하십시오. 도움이되지 않으면 여기에 더 많은 코드를 게시하십시오. – konradwww
좋아요, Form 클래스의 코드없이 더 많은 코드를 추가했습니다. 요소를 구성하고 db에 저장하는 코드는 잘 작동하므로 코드를 넣지 않았습니다. – ahmetbitbit