2015-05-14 19 views
5

Tôi đang thiết lập một số bộ lọc và trình duyệt tính hợp lệ cho biểu mẫu của mình, nhưng khi tôi gửi, lỗi này xuất hiện: "Thành phần Zend \ I18n \ Filter yêu cầu phần mở rộng PHP intl". Đây có phải là do trình xác thực Alnum và Alpha không?Zend InputFilter yêu cầu phần mở rộng PHP intl?

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

thể trùng lặp của [Không thể sử dụng Zend \ i18n \ View \ Lớp trợ giúp \ CurrencyFormat] (http://stackoverflow.com/questions/25771519/unable-to-use-zend-i18n-view-helper-currencyformat-class) –

+0

Cảm ơn. Đã sửa nó! – Milen

+0

@Milen bạn có thể trả lời câu hỏi sau đó không? Xin đừng để nó chưa được trả lời. –

Trả lời

8

cố định nó bằng cách vào php.ini và uncommenting extension=php_intl.dll

+1

cho người dùng Windows chỉ –

+0

Có thể sẽ cần phải cài đặt php * -intl. Xem https://github.com/zendframework/zendframework/issues/4879 để biết thêm chi tiết. Được cho là cố định, nhưng vẫn là một vấn đề tháng 11 năm 2016. –

0

Nếu bạn đang sử dụng XAMPP trên MAC OS X thêm extension=intl.so vào tập tin /Applications/XAMPP/xamppfiles/etc/php.ini của bạn và khởi động lại Apache. Nếu vẫn không hoạt động, bạn cần cài đặt intl. Bạn có thể làm theo hướng dẫn ở đây https://stackoverflow.com/a/32404183/3303055

0

Trên Ubuntu 16.04, với php 5.6, hãy thử:

sudo apt-get install php5.6-intl 

và sau đó

sudo service apache2 restart 
Các vấn đề liên quan