Zend 프레임워크:Zend_Form_Element 양식 필드를 필수로 설정하려면 요소가 비어 있지 않은지 확인하는 데 사용되는 유효성 검사기를 어떻게 변경합니까?

StackOverflow https://stackoverflow.com/questions/34848

  •  09-06-2019
  •  | 
  •  

문제

사용할 때 Zend_Form, 입력이 비어 있지 않은지 확인하는 유일한 방법은 다음을 수행하는 것입니다.

$element->setRequired(true);

이것이 설정되지 않고 요소가 비어 있으면 해당 요소에 대해 유효성 검사가 실행되지 않는 것 같습니다.

내가 사용한다면 setRequired(), 요소에는 자동으로 표준 NotEmpty 유효성 검사기가 제공됩니다.문제는 이 유효성 검사기의 오류 메시지가 "값이 비어 있지만 비어 있지 않은 값이 필요합니다"라는 것입니다.이 메시지를 변경하고 싶습니다.현재 나는 Zend_Validate_NotEmpty 수업인데 이건 좀 해키네요.

나는 이상적으로 내 자신의 수업을 사용할 수 있기를 원합니다. Zend_Validate_NotEmpty) 비어 있지 않은 확인을 수행합니다.

도움이 되었습니까?

해결책

저는 이렇게 했습니다(ZF 1.5):

$name = new Zend_Form_Element_Text('name');
$name->setLabel('Full Name: ')
     ->setRequired(true)
     ->addFilter('StripTags')
     ->addFilter('StringTrim')
     ->addValidator($MyNotEmpty);

따라서 addValidator()가 흥미로운 부분입니다.메시지는 "오류 메시지 파일"에 설정됩니다(모든 사용자 정의 메시지를 하나의 파일로 묶기 위해).

$MyNotEmpty = new Zend_Validate_NotEmpty();
$MyNotEmpty->setMessage($trans->translate('err.IS_EMPTY'),Zend_Validate_NotEmpty::IS_EMPTY);

도움이 되었기를 바랍니다...

다른 팁

기본적으로 setRequired(true)는 isValid()에게 NonEmpty 유효성 검사를 추가하도록 지시합니다. 이미 존재하지 않는 경우.isValid()가 호출될 때까지 이 유효성 검사는 존재하지 않으므로 메시지를 설정할 수 없습니다.

가장 쉬운 해결책은 isValid()가 호출되기 전에 NonEmpty 유효성 검사를 수동으로 추가하고 그에 따라 메시지를 설정하는 것입니다.

$username = new Zend_Form_Element_Text('username');
$username->setRequired(true)
         ->addValidator('NotEmpty', true, array('messages' => array('isEmpty' => 'Empty!')));

NotEmpty 유효성 검사기를 추가하고 자신만의 메시지를 추가하세요.

// In the form class:
$username = $this->createElement('text', 'username');
$username->setRequired();  // Note that this seems to be required!
$username->addValidator('NotEmpty', true, array(
    'messages' => array(
        'isEmpty' => 'my localized err msg')));

메모 요소에 대해 setRequired()도 호출하지 않으면 NotEmpty 유효성 검사기가 실행되지 않는 것 같습니다.

컨트롤러(또는 어디에서든)에서 $form->setTranslator($yourTranslator)를 호출하여 페이지에 인쇄될 때 오류 메시지를 현지화합니다.

최대한 멀리 볼 수 오류 메시지 변경 특정 오류 메시지를 변경할 수 있는 방법은 없습니다.게다가 매뉴얼에서는 이것이 Zend_Form에 속하는 함수인 것처럼 보이지만 Zend_Form의 인스턴스에서 사용할 때 메서드를 찾을 수 없다는 메시지가 나타납니다.

그리고 사용법의 예는 정말 좋을 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top