mirror of
				https://github.com/yiisoft/yii2.git
				synced 2025-10-31 18:47:33 +08:00 
			
		
		
		
	Made error message encoding configurable for ActiveForm
Updated yii.activeform.js to use the encode option introduced in #4122. Updated ActiveForm with new option encodeErrorSummary fixes #4690, close #4691
This commit is contained in:
		 Alex-Code
					Alex-Code
				
			
				
					committed by
					
						 Carsten Brandt
						Carsten Brandt
					
				
			
			
				
	
			
			
			 Carsten Brandt
						Carsten Brandt
					
				
			
						parent
						
							f099616967
						
					
				
				
					commit
					25c2f9bf85
				
			| @ -181,6 +181,7 @@ Yii Framework 2 Change Log | ||||
| - Enh #4630: Added automatic generating of unique slug value to `yii\behaviors\Sluggable` (klimov-paul) | ||||
| - Enh #4644: Added `\yii\db\Schema::createColumnSchema()` to be able to customize column schema used (mcd-php) | ||||
| - Enh #4656: HtmlPurifier helper config can now be a closure to change the purifier config object after it was created (Alex-Code) | ||||
| - Enh #4691: Encoding on `ActiveForm` and `ActiveField` validation errors is now configurable (Alex-Code) | ||||
| - Enh: Added support for using sub-queries when building a DB query with `IN` condition (qiangxue) | ||||
| - Enh: Supported adding a new response formatter without the need to reconfigure existing formatters (qiangxue) | ||||
| - Enh: Added `yii\web\UrlManager::addRules()` to simplify adding new URL rules (qiangxue) | ||||
|  | ||||
| @ -23,6 +23,8 @@ | ||||
|     }; | ||||
|  | ||||
|     var defaults = { | ||||
|         // whether to encode the error summary | ||||
|         encodeErrorSummary: true, | ||||
|         // the jQuery selector for the error summary | ||||
|         errorSummary: undefined, | ||||
|         // whether to perform validation before submitting the form. | ||||
| @ -73,6 +75,8 @@ | ||||
|         input: undefined, | ||||
|         // the jQuery selector of the error tag | ||||
|         error: undefined, | ||||
|         // whether to encode the error | ||||
|         encodeError: true, | ||||
|         // whether to perform validation when a change is detected on the input | ||||
|         validateOnChange: false, | ||||
|         // whether to perform validation when the user is typing. | ||||
| @ -404,11 +408,15 @@ | ||||
|             var $container = $form.find(attribute.container); | ||||
|             var $error = $container.find(attribute.error); | ||||
|             if (hasError) { | ||||
|                 $error.text(messages[attribute.id][0]); | ||||
|                 if (attribute.encodeError) { | ||||
|                     $error.text(messages[attribute.id][0]); | ||||
|                 } else { | ||||
|                     $error.html(messages[attribute.id][0]); | ||||
|                 } | ||||
|                 $container.removeClass(data.settings.validatingCssClass + ' ' + data.settings.successCssClass) | ||||
|                     .addClass(data.settings.errorCssClass); | ||||
|             } else { | ||||
|                 $error.text(''); | ||||
|                 $error.empty(); | ||||
|                 $container.removeClass(data.settings.validatingCssClass + ' ' + data.settings.errorCssClass + ' ') | ||||
|                     .addClass(data.settings.successCssClass); | ||||
|             } | ||||
| @ -425,12 +433,18 @@ | ||||
|     var updateSummary = function ($form, messages) { | ||||
|         var data = $form.data('yiiActiveForm'), | ||||
|             $summary = $form.find(data.settings.errorSummary), | ||||
|             $ul = $summary.find('ul').html(''); | ||||
|             $ul = $summary.find('ul').empty(); | ||||
|  | ||||
|         if ($summary.length && messages) { | ||||
|             $.each(data.attributes, function () { | ||||
|                 if ($.isArray(messages[this.id]) && messages[this.id].length) { | ||||
|                     $ul.append($('<li/>').text(messages[this.id][0])); | ||||
|                     var error = $('<li/>'); | ||||
|                     if (data.settings.encodeErrorSummary) { | ||||
|                         error.text(messages[this.id][0]); | ||||
|                     } else { | ||||
|                         error.html(messages[this.id][0]); | ||||
|                     } | ||||
|                     $ul.append(error); | ||||
|                 } | ||||
|             }); | ||||
|             $summary.toggle($ul.find('li').length > 0); | ||||
|  | ||||
| @ -63,6 +63,7 @@ class ActiveField extends Component | ||||
|      * The following special options are recognized: | ||||
|      * | ||||
|      * - tag: the tag name of the container element. Defaults to "div". | ||||
|      * - encode: whether to encode the error output. Defaults to true. | ||||
|      * | ||||
|      * @see \yii\helpers\Html::renderTagAttributes() for details on how attributes are being rendered. | ||||
|      */ | ||||
| @ -726,6 +727,7 @@ class ActiveField extends Component | ||||
|             } else { | ||||
|                 $options['error'] = isset($this->errorOptions['tag']) ? $this->errorOptions['tag'] : 'span'; | ||||
|             } | ||||
|             $options['encodeError'] = !isset($this->errorOptions['encode']) || $this->errorOptions['encode'] !== false; | ||||
|  | ||||
|             return $options; | ||||
|         } else { | ||||
|  | ||||
| @ -53,6 +53,10 @@ class ActiveForm extends Widget | ||||
|      * @var array the default configuration used by [[field()]] when creating a new field object. | ||||
|      */ | ||||
|     public $fieldConfig; | ||||
|     /** | ||||
|      * @var boolean whether to perform encoding on the error summary. | ||||
|      */ | ||||
|     public $encodeErrorSummary = true; | ||||
|     /** | ||||
|      * @var string the default CSS class for the error summary container. | ||||
|      * @see errorSummary() | ||||
| @ -239,6 +243,7 @@ class ActiveForm extends Widget | ||||
|     protected function getClientOptions() | ||||
|     { | ||||
|         $options = [ | ||||
|             'encodeErrorSummary' => $this->encodeErrorSummary, | ||||
|             'errorSummary' => '.' . implode('.', preg_split('/\s+/', $this->errorSummaryCssClass, -1, PREG_SPLIT_NO_EMPTY)), | ||||
|             'validateOnSubmit' => $this->validateOnSubmit, | ||||
|             'errorCssClass' => $this->errorCssClass, | ||||
| @ -276,6 +281,7 @@ class ActiveForm extends Widget | ||||
|     public function errorSummary($models, $options = []) | ||||
|     { | ||||
|         Html::addCssClass($options, $this->errorSummaryCssClass); | ||||
|         $options['encode'] = $this->encodeErrorSummary; | ||||
|         return Html::errorSummary($models, $options); | ||||
|     } | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user