2014-08-28 2 views
1

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'];

기본적으로 사용자 지정 동작의 기능을 복제하고 양식을 제출했지만 유효성을 검사하지 않은 후에 내 필드를 초기화하려면 어떻게해야합니까?

답변

0

필요한 로직은 결국 AppController.php에 저장됩니다. 모든 것이 이제는 잘됩니다.

관련 문제