簡體   English   中英

Zend InputFilter需要intl PHP擴展嗎?

[英]Zend InputFilter requires intl PHP extension?

我正在為我的表單設置一些過濾器和驗證器,但是當我提交它時,會出現此錯誤:“Zend \\ I18n \\ Filter組件需要intl PHP擴展”。 這是因為Alnum和Alpha驗證器嗎?

碼:

     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.!#$%&\'*+\/=?^_`{|}~-]+@[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 символа",
                            ),
                        ),
                    ),
                ),
            )));
          }

通過轉到php.ini並取消注釋extension=php_intl.dll來修復它

在Ubuntu 16.04上,使用php 5.6,嘗試:

sudo apt-get install php5.6-intl

然后

sudo service apache2 restart

在Ubuntu 18.04上,使用PHP 7.2,嘗試:

sudo apt-get install php7.2-intl
sudo service apache2 restart

如果不起作用,請啟用extension = php_intl.dll:

vim /etc/php/7.2/apache2/php.ini
sudo service apache2 restart

如果您在MAC OS X上使用XAMPP,請將extension=intl.so添加到/Applications/XAMPP/xamppfiles/etc/php.ini文件中,然后重新啟動Apache。 如果仍然無法正常工作,則需要安裝intl。 您可以按照https://stackoverflow.com/a/32404183/3303055中的說明進行操作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM