Commit a954312a by resurtm

Fixes #312. Additional docs on IDN in EmailValidator and UrlValidator.

parent 9ea5ccc4
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
namespace yii\validators; namespace yii\validators;
use Yii; use Yii;
use yii\base\InvalidConfigException;
use yii\helpers\Html; use yii\helpers\Html;
use yii\web\JsExpression; use yii\web\JsExpression;
use yii\helpers\Json; use yii\helpers\Json;
...@@ -50,6 +51,8 @@ class EmailValidator extends Validator ...@@ -50,6 +51,8 @@ class EmailValidator extends Validator
/** /**
* @var boolean whether validation process should take into account IDN (internationalized domain * @var boolean whether validation process should take into account IDN (internationalized domain
* names). Defaults to false meaning that validation of emails containing IDN will always fail. * names). Defaults to false meaning that validation of emails containing IDN will always fail.
* Note that in order to use IDN validation you have to install and enable `intl` PHP extension,
* otherwise an exception would be thrown.
*/ */
public $enableIDN = false; public $enableIDN = false;
...@@ -60,6 +63,9 @@ class EmailValidator extends Validator ...@@ -60,6 +63,9 @@ class EmailValidator extends Validator
public function init() public function init()
{ {
parent::init(); parent::init();
if ($this->enableIDN && !function_exists('idn_to_ascii')) {
throw new InvalidConfigException('In order to use IDN validation intl extension must be installed and enabled.');
}
if ($this->message === null) { if ($this->message === null) {
$this->message = Yii::t('yii', '{attribute} is not a valid email address.'); $this->message = Yii::t('yii', '{attribute} is not a valid email address.');
} }
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
namespace yii\validators; namespace yii\validators;
use Yii; use Yii;
use yii\base\InvalidConfigException;
use yii\helpers\Html; use yii\helpers\Html;
use yii\web\JsExpression; use yii\web\JsExpression;
use yii\helpers\Json; use yii\helpers\Json;
...@@ -40,7 +41,8 @@ class UrlValidator extends Validator ...@@ -40,7 +41,8 @@ class UrlValidator extends Validator
/** /**
* @var boolean whether validation process should take into account IDN (internationalized * @var boolean whether validation process should take into account IDN (internationalized
* domain names). Defaults to false meaning that validation of URLs containing IDN will always * domain names). Defaults to false meaning that validation of URLs containing IDN will always
* fail. * fail. Note that in order to use IDN validation you have to install and enable `intl` PHP
* extension, otherwise an exception would be thrown.
*/ */
public $enableIDN = false; public $enableIDN = false;
...@@ -51,6 +53,9 @@ class UrlValidator extends Validator ...@@ -51,6 +53,9 @@ class UrlValidator extends Validator
public function init() public function init()
{ {
parent::init(); parent::init();
if ($this->enableIDN && !function_exists('idn_to_ascii')) {
throw new InvalidConfigException('In order to use IDN validation intl extension must be installed and enabled.');
}
if ($this->message === null) { if ($this->message === null) {
$this->message = Yii::t('yii', '{attribute} is not a valid URL.'); $this->message = Yii::t('yii', '{attribute} is not a valid URL.');
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment