AppModel.php에 지정된 사용자 지정 동작을 사용하여 선택한 언어를 기반으로 필드를 자동으로 만듭니다. 따라서 선택한 언어에 따라 name_eng
->name
또는 name_fra
->name
입니다.beforeValidate를 사용하여 변수를 초기화 할 수 없습니다.
...
$virtualField = sprintf($model->name.'.'.$name.'_%s', Configure::read('Config.language'));
$virtualFields[$name] = $virtualField;
$model->virtualFields = $virtualFields;
...
이 부분은 작동합니다.
수정 양식을 제출할 때 유효성 검사 오류가 발생하고 오류 메시지와 함께 편집보기가 표시되면 해당 필드를 사용할 수없는 문제가 발생합니다. 이것이 내 행동이이 과정에서 호출되지 않거나 양식 데이터를 사용하여 생성되는 것 때문에 발생한다고 생각합니다.
beforeValidate
을 사용하여 값을 초기화한다고 생각했습니다. 그러나, 밖으로 작동하지 않습니다 :
AppModel.php
에서 : 뷰에서
function beforeValidate(array $options = array()){
//hard coded for test purposes
$this->data['CertificateType']['name'] = $this->data['CertificateType']['name_'.Configure::read('Config.language')]
return true;
}
(edit.ctp
) : 나는 날이 오류를 제공 양식을 제출하면 필드가 아직 존재하지 않는
echo $this->request->data['CertificateType']['name'];
기본적으로 사용자 지정 동작의 기능을 복제하고 양식을 제출했지만 유효성을 검사하지 않은 후에 내 필드를 초기화하려면 어떻게해야합니까?