Zend InputFilter 需要 intl PHP 扩展?
Zend InputFilter requires intl PHP extension?
我正在为我的表单设置一些过滤器和验证器,但是当我提交它时,出现了这个错误:"Zend\I18n\Filter component requires the intl PHP extension"。这是因为 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
来修复它
如果您在 MAC OS 上使用 XAMPP X 添加 extension=intl.so
到您的 /Applications/XAMPP/xamppfiles/etc/php.ini
文件并重新启动 Apache。
如果它仍然无法正常工作,则需要安装 intl。
您可以按照此处的说明进行操作
在 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
如果不起作用,请启用扩展=php_intl.dll in:
vim /etc/php/7.2/apache2/php.ini
sudo service apache2 restart
我正在为我的表单设置一些过滤器和验证器,但是当我提交它时,出现了这个错误:"Zend\I18n\Filter component requires the intl PHP extension"。这是因为 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
如果您在 MAC OS 上使用 XAMPP X 添加 extension=intl.so
到您的 /Applications/XAMPP/xamppfiles/etc/php.ini
文件并重新启动 Apache。
如果它仍然无法正常工作,则需要安装 intl。
您可以按照此处的说明进行操作
在 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
如果不起作用,请启用扩展=php_intl.dll in:
vim /etc/php/7.2/apache2/php.ini
sudo service apache2 restart