2015-05-14 3 views
5

Ich richte einige Filter und Validatoren für mein Formular ein, aber wenn ich es abschicke, erscheint dieser Fehler: "Zend \ I18n \ Filter-Komponente benötigt die intl PHP-Erweiterung". Liegt das an den Alnum- und Alpha-Validatoren?Zend InputFilter erfordert intl PHP-Erweiterung?

Code:

 public function getInputFilter() { 
     if (!$this->inputFilter) { 
      $inputFilter = new InputFilter(); 

      $inputFilter->add(array(
       'name' => 'email', 
       'required' => true, 
       "filters" => array(
        array('name' => 'StringTrim'), 
        array('name' => 'StripTags')), 
       'validators' => array(
        array(
         'name' => 'Regex', 
         'options' => array(
          'pattern' => '/^[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-][email protected][a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/', 
          'messages' => array(
           Regex::NOT_MATCH => 'Е-майл адреса е невалиден.', 
          ), 
         ), 
         'break_chain_on_failure' => true 
        ), 
        array(
         'name' => 'EmailAddress', 
         'options' => array(
          'messages' => array(
           EmailAddress::INVALID_FORMAT => "Е-майл адреса е невалиден.", 
           EmailAddress::INVALID => "", 
           EmailAddress::INVALID_LOCAL_PART => "", 
           EmailAddress::INVALID_HOSTNAME => "", 
           EmailAddress::INVALID_SEGMENT => "", 
           EmailAddress::DOT_ATOM => "", 
           EmailAddress::INVALID_MX_RECORD => "", 
          ), 
         ), 
        ), 
       ), 
      )); 

      $inputFilter->add((array(
       'name' => 'name', 
       'required' => true, 
       "filters" => array(
        array('name' => 'StringTrim'), 
        array('name' => 'StripTags')), 
       'validators' => array(
        array(
         'name' => 'Alpha', 
        ), 
       ), 
      ))); 

      $inputFilter->add((array(
       'name' => 'password', 
       'required' => true, 
       "filters" => array(
        array('name' => 'StringTrim'), 
        array('name' => 'StripTags')), 
       'validators' => array(
        array(
         'name' => 'Alnum', 
        ), 
        array(
         'name' => 'StringLength', 
         'options' => array(
          'min' => 6, 
          'max' => 12, 
          'messages' => array(
           StringLength::INVALID => "Паролата трябва да е от 6 до 12 символа", 
          ), 
         ), 
        ), 
       ), 
      ))); 
      } 
+2

möglich Duplikat [Kann nicht Zend \ I18n \ View \ verwenden Helper \ CurrencyFormat-Klasse] (http://stackoverflow.com/questions/25771519/unable-to-use-zend-i18n-view-helper-currencyformat-class) –

+0

Danke. Behoben! – Milen

+0

@Milen können Sie die Frage dann beantworten? Bitte lassen Sie es nicht unbeantwortet. –

Antwort

8

es wurde behoben, indem Sie extension=php_intl.dll

+1

nur für Windows-Benutzer –

+0

Möglicherweise muss PHP * -intl installiert werden. Weitere Informationen finden Sie unter https://github.com/zendframework/zendframework/issues/4879. Angeblich behoben, aber immer noch ein Problem November 2016. –

0

php.ini und uncommenting Wenn Sie XAMPP auf MAC OS X hinzufügen extension=intl.so in Ihre /Applications/XAMPP/xamppfiles/etc/php.ini Datei und starten Sie Apache verwenden. Wenn es immer noch nicht funktioniert, müssen Sie Intl installieren. Sie können folgen Sie den Anweisungen hier https://stackoverflow.com/a/32404183/3303055

0

auf Ubuntu 16.04, mit PHP 5.6, versuchen:

sudo apt-get install php5.6-intl 

und dann

sudo service apache2 restart