Browse Source

Merge branch 'cyphix333-master'

tags/2.0.11
SilverFire - Dmitry Naumenko 8 years ago
parent
commit
7f46ab33cc
  1. 1
      framework/CHANGELOG.md
  2. 8
      framework/helpers/BaseHtml.php
  3. 41
      tests/framework/helpers/HtmlTest.php

1
framework/CHANGELOG.md

@ -45,6 +45,7 @@ Yii Framework 2 Change Log
- Enh #12901: Added `getDefaultHelpHeader` method to the `yii\console\controllers\HelpController` class to be able to override default help header in a class heir (diezztsk)
- Enh #13035: Use ArrayHelper::getValue() in SluggableBehavior::getValue() (thyseus)
- Enh #13020: Added `disabledListItemSubTagOptions` attribute for `yii\widgets\LinkPager` in order to customize the disabled list item sub tag element (nadar)
- Enh #12988: Changed `textarea` method within the `yii\helpers\BaseHtml` class to allow users to control whether html entities found within `$value` will be double-encoded or not (cyphix333)
- Enh: Added constants for specifying `yii\validators\CompareValidator::$type` (cebe)

8
framework/helpers/BaseHtml.php

@ -660,12 +660,18 @@ class BaseHtml
* the attributes of the resulting tag. The values will be HTML-encoded using [[encode()]].
* If a value is null, the corresponding attribute will not be rendered.
* See [[renderTagAttributes()]] for details on how attributes are being rendered.
* The following special options are recognized:
*
* - `doubleEncode`: whether to double encode HTML entities in `$value`. If `false`, HTML entities in `$value` will not
* be further encoded. This option is available since version 2.0.11.
*
* @return string the generated text area tag
*/
public static function textarea($name, $value = '', $options = [])
{
$options['name'] = $name;
return static::tag('textarea', static::encode($value), $options);
$doubleEncode = ArrayHelper::remove($options, 'doubleEncode', true);
return static::tag('textarea', static::encode($value, $doubleEncode), $options);
}
/**

41
tests/framework/helpers/HtmlTest.php

@ -213,10 +213,45 @@ class HtmlTest extends TestCase
$this->assertEquals('<input type="file" class="t" name="test" value="value">', Html::fileInput('test', 'value', ['class' => 't']));
}
public function testTextarea()
/**
* @return array
*/
public function textareaDataProvider()
{
return [
[
'<textarea name="test"></textarea>',
'test',
null,
[]
],
[
'<textarea class="t" name="test">value&lt;&gt;</textarea>',
'test',
'value<>',
['class' => 't']
],
[
'<textarea name="test">value&amp;lt;&amp;gt;</textarea>',
'test',
'value&lt;&gt;',
[]
],
[
'<textarea name="test">value&lt;&gt;</textarea>',
'test',
'value&lt;&gt;',
['doubleEncode' => false]
],
];
}
/**
* @dataProvider textareaDataProvider
*/
public function testTextarea($expected, $name, $value, $options)
{
$this->assertEquals('<textarea name="test"></textarea>', Html::textarea('test'));
$this->assertEquals('<textarea class="t" name="test">value&lt;&gt;</textarea>', Html::textarea('test', 'value<>', ['class' => 't']));
$this->assertEquals($expected, Html::textarea($name, $value, $options));
}
public function testRadio()

Loading…
Cancel
Save