إطار زند:تعيين حقل نموذج Zend_Form_Element ليكون مطلوبًا، كيف يمكنني تغيير أداة التحقق المستخدمة للتأكد من أن العنصر ليس فارغًا

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

  •  09-06-2019
  •  | 
  •  

سؤال

عند استخدام أ Zend_Form, ، الطريقة الوحيدة للتحقق من عدم ترك الإدخال فارغًا هي القيام بذلك

$element->setRequired(true);

إذا لم يتم تعيين هذا وكان العنصر فارغًا، فيبدو لي أن التحقق من الصحة لا يتم تشغيله على العنصر.

إذا كنت أستخدم setRequired(), ، يتم منح العنصر تلقائيًا مدقق NotEmpty القياسي.المشكلة هي أن رسالة الخطأ التي تظهر مع أداة التحقق هذه مزعجة، "القيمة فارغة، ولكن هناك حاجة إلى قيمة غير فارغة".أريد تغيير هذه الرسالة.لقد قمت بذلك حاليًا عن طريق تغيير Zend_Validate_NotEmpty الطبقة، ولكن هذا هو hacky قليلا.

أود بشكل مثالي أن أكون قادرًا على استخدام صفي الخاص (المشتق من 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()، فلا يمكنك تعيين الرسالة.

الحل الأسهل هو ببساطة إضافة التحقق من صحة NonEmpty يدويًا قبل استدعاء isValid() وتعيين رسالته وفقًا لذلك.

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

ملحوظة يبدو أن أداة التحقق من صحة NotEmpty لا يتم تشغيلها إلا إذا قمت أيضًا باستدعاء setRequired() على العنصر.

في وحدة التحكم (أو في أي مكان)، اتصل بـ $form->setTranslator($yourTranslator) لترجمة رسالة الخطأ عند طباعتها على الصفحة.

غير ال رسالة خطأ.

بقدر ما أستطيع أن أرى تغيير رسالة الخطأ ليس لديه وسيلة لتغيير رسالة خطأ معين.بالإضافة إلى أن الدليل يجعل الأمر يبدو كما لو أن هذه وظيفة تنتمي إلى Zend_Form، لكن لم يتم العثور على الطريقة عند استخدامها في مثيل Zend_Form.

ومثال الاستخدام سيكون رائعًا حقًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top