0 关注者

类 yii\helpers\BaseHtml

继承关系yii\helpers\BaseHtml
子类yii\helpers\Html
可用版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/helpers/BaseHtml.php

BaseHtml 为 yii\helpers\Html 提供具体实现。

不要使用 BaseHtml。请使用 yii\helpers\Html 代替。

公有属性

隐藏继承属性

属性 类型 描述 定义于
$attributeOrder array 标签中属性的首选顺序。 yii\helpers\BaseHtml
$attributeRegex string 用于属性名称验证的正则表达式。 yii\helpers\BaseHtml
$dataAttributes array 当属性值为数组类型时,应特殊处理的标签属性列表。 yii\helpers\BaseHtml
$normalizeClassAttribute boolean 是否删除标签属性class中的重复类名 yii\helpers\BaseHtml
$voidElements array 空元素列表(元素名称 => 1) yii\helpers\BaseHtml

公有方法

隐藏继承方法

方法 描述 定义于
a() 生成超链接标签。 yii\helpers\BaseHtml
activeCheckbox() 为给定的模型属性生成复选框标签及其标签。 yii\helpers\BaseHtml
activeCheckboxList() 生成复选框列表。 yii\helpers\BaseHtml
activeDropDownList() 为给定的模型属性生成下拉列表。 yii\helpers\BaseHtml
activeFileInput() 为给定的模型属性生成文件输入标签。 yii\helpers\BaseHtml
activeHiddenInput() 为给定的模型属性生成隐藏输入标签。 yii\helpers\BaseHtml
activeHint() 为给定的模型属性生成提示标签。 yii\helpers\BaseHtml
activeInput() 为给定的模型属性生成输入标签。 yii\helpers\BaseHtml
activeLabel() 为给定的模型属性生成标签标签。 yii\helpers\BaseHtml
activeListBox() 生成列表框。 yii\helpers\BaseHtml
activePasswordInput() 为给定的模型属性生成密码输入标签。 yii\helpers\BaseHtml
activeRadio() 为给定的模型属性生成单选按钮标签及其标签。 yii\helpers\BaseHtml
activeRadioList() 生成单选按钮列表。 yii\helpers\BaseHtml
activeTextInput() 为给定的模型属性生成文本输入标签。 yii\helpers\BaseHtml
activeTextarea() 为给定的模型属性生成文本区域标签。 yii\helpers\BaseHtml
addCssClass() 将 CSS 类(或多个类)添加到指定的选项中。 yii\helpers\BaseHtml
addCssStyle() 将指定的 CSS 样式添加到 HTML 选项中。 yii\helpers\BaseHtml
beginForm() 生成表单开始标签。 yii\helpers\BaseHtml
beginTag() 生成开始标签。 yii\helpers\BaseHtml
button() 生成按钮标签。 yii\helpers\BaseHtml
buttonInput() 生成输入按钮。 yii\helpers\BaseHtml
checkbox() 生成复选框输入。 yii\helpers\BaseHtml
checkboxList() 生成复选框列表。 yii\helpers\BaseHtml
csrfMetaTags() 生成包含 CSRF 令牌信息的元标签。 yii\helpers\BaseHtml
cssFile() 生成引用外部 CSS 文件的链接标签。 yii\helpers\BaseHtml
cssStyleFromArray() 将 CSS 样式数组转换为字符串表示形式。 yii\helpers\BaseHtml
cssStyleToArray() 将 CSS 样式字符串转换为数组表示形式。 yii\helpers\BaseHtml
decode() 将特殊的 HTML 实体解码回相应的字符。 yii\helpers\BaseHtml
encode() 将特殊字符编码为 HTML 实体。 yii\helpers\BaseHtml
endForm() 生成表单结束标签。 yii\helpers\BaseHtml
endTag() 生成结束标签。 yii\helpers\BaseHtml
error() 生成包含指定模型属性的第一个验证错误的标签。 yii\helpers\BaseHtml
errorSummary() 生成验证错误的摘要。 yii\helpers\BaseHtml
escapeJsRegularExpression() 转义正则表达式以在 JavaScript 中使用。 yii\helpers\BaseHtml
fileInput() 生成文件输入字段。 yii\helpers\BaseHtml
getAttributeName() 从给定的属性表达式返回真实的属性名称。 yii\helpers\BaseHtml
getAttributeValue() 返回指定属性名称或表达式的值。 yii\helpers\BaseHtml
getInputId() 为指定的属性名称或表达式生成合适的输入 ID。 yii\helpers\BaseHtml
getInputIdByName() 将输入名称转换为 ID。 yii\helpers\BaseHtml
getInputName() 为指定的属性名称或表达式生成合适的输入名称。 yii\helpers\BaseHtml
hiddenInput() 生成隐藏输入字段。 yii\helpers\BaseHtml
img() 生成图像标签。 yii\helpers\BaseHtml
input() 生成给定类型的输入类型。 yii\helpers\BaseHtml
jsFile() 生成引用外部 JavaScript 文件的脚本标签。 yii\helpers\BaseHtml
label() 生成标签标签。 yii\helpers\BaseHtml
listBox() 生成列表框。 yii\helpers\BaseHtml
mailto() 生成 mailto 超链接。 yii\helpers\BaseHtml
ol() 生成有序列表。 yii\helpers\BaseHtml
passwordInput() 生成密码输入字段。 yii\helpers\BaseHtml
radio() 生成单选按钮输入。 yii\helpers\BaseHtml
radioList() 生成单选按钮列表。 yii\helpers\BaseHtml
removeCssClass() 从指定的选项中删除 CSS 类。 yii\helpers\BaseHtml
removeCssStyle() 从 HTML 选项中删除指定的 CSS 样式。 yii\helpers\BaseHtml
renderSelectOptions() 呈现可由 dropDownList()listBox() 使用的选项标签。 yii\helpers\BaseHtml
renderTagAttributes() 呈现 HTML 标签属性。 yii\helpers\BaseHtml
resetButton() 生成重置按钮标签。 yii\helpers\BaseHtml
resetInput() 生成重置输入按钮。 yii\helpers\BaseHtml
script() 生成脚本标签。 yii\helpers\BaseHtml
style() 生成样式标签。 yii\helpers\BaseHtml
submitButton() 生成提交按钮标签。 yii\helpers\BaseHtml
submitInput() 生成提交输入按钮。 yii\helpers\BaseHtml
tag() 生成完整的 HTML 标签。 yii\helpers\BaseHtml
textInput() 生成文本输入字段。 yii\helpers\BaseHtml
textarea() 生成文本区域输入。 yii\helpers\BaseHtml
ul() 生成无序列表。 yii\helpers\BaseHtml

受保护方法

隐藏继承方法

方法 描述 定义于
activeBooleanInput() 生成布尔输入 此方法主要由 activeCheckbox()activeRadio() 调用。 yii\helpers\BaseHtml
activeListInput() 生成输入字段列表。 yii\helpers\BaseHtml
booleanInput() 生成布尔输入。 yii\helpers\BaseHtml
setActivePlaceholder() 从模型属性标签生成占位符。 yii\helpers\BaseHtml

属性详情

隐藏继承属性

$attributeOrder 公有静态属性

标签中属性的首选顺序。这主要影响 renderTagAttributes() 呈现的属性顺序。

public static 数组 $attributeOrder = [
    
'type',
    
'id',
    
'class',
    
'name',
    
'value',
    
'href',
    
'src',
    
'srcset',
    
'form',
    
'action',
    
'method',
    
'selected',
    
'checked',
    
'readonly',
    
'disabled',
    
'multiple',
    
'size',
    
'maxlength',
    
'width',
    
'height',
    
'rows',
    
'cols',
    
'alt',
    
'title',
    
'rel',
    
'media',
]
$attributeRegex 公共静态属性 (自版本 2.0.12 起可用)

用于属性名称验证的正则表达式。

public static 字符串 $attributeRegex '/(^|.*\])([\w\.\+]+)(\[.*|$)/u'
$dataAttributes 公共静态属性 (自版本 2.0.3 起可用)

应在数组类型的值时特殊处理的标签属性列表。特别是,如果data属性的值为['name' => 'xyz', 'age' => 13],则将生成两个属性而不是一个:data-name="xyz" data-age="13"

public static 数组 $dataAttributes = [
    
'aria',
    
'data',
    
'data-ng',
    
'ng',
]
$normalizeClassAttribute 公共静态属性 (自版本 2.0.44 起可用)

是否删除标签属性class中的重复类名

另请参阅

public static 布尔值 $normalizeClassAttribute false
$voidElements 公共静态属性

空元素列表(元素名称 => 1)

另请参阅 https://html.whatwg.com.cn/multipage/syntax.html#void-element

public static 数组 $voidElements = [
    
'area' => 1,
    
'base' => 1,
    
'br' => 1,
    
'col' => 1,
    
'command' => 1,
    
'embed' => 1,
    
'hr' => 1,
    
'img' => 1,
    
'input' => 1,
    
'keygen' => 1,
    
'link' => 1,
    
'meta' => 1,
    
'param' => 1,
    
'source' => 1,
    
'track' => 1,
    
'wbr' => 1,
]

方法详情

隐藏继承方法

a() 公共静态方法

生成超链接标签。

另请参阅 yii\helpers\Url::to()

public static 字符串 a ( $text, $url null, $options = [] )
$text string

链接正文。它不会进行 HTML 编码。因此,您可以传入 HTML 代码(例如图像标签)。如果此内容来自最终用户,则应考虑使用 encode() 对其进行编码以防止 XSS 攻击。

$url 数组|字符串|

超链接标签的 URL。此参数将由 yii\helpers\Url::to() 处理,并将用于标签的“href”属性。如果此参数为空,则不会生成“href”属性。

如果您想使用绝对 URL,可以在将 URL 传递给此方法之前,先自行调用 yii\helpers\Url::to(),如下所示

Html::a('link text', Url::to($url, true))
$options array

以名称-值对形式表示的标签选项。这些将呈现为生成的标签的属性。值将使用 encode() 进行 HTML 编码。如果值为 null,则不会呈现相应的属性。有关如何呈现属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的超链接

                public static function a($text, $url = null, $options = [])
{
    if ($url !== null) {
        $options['href'] = Url::to($url);
    }
    return static::tag('a', $text, $options);
}

            
activeBooleanInput() 受保护的静态方法 (自版本 2.0.9 起可用)

生成布尔输入 此方法主要由 activeCheckbox()activeRadio() 调用。

protected static 字符串 activeBooleanInput ( $type, $model, $attribute, $options = [] )
$type string

输入类型。这可以是radiocheckbox

$model yii\base\Model

模型对象

$attribute string

属性名称或表达式。有关属性表达式的格式,请参阅 getAttributeName()

$options array

以名称-值对形式表示的标签选项。有关接受的属性的详细信息,请参阅 booleanInput()

返回值 string

生成的输入元素

                protected static function activeBooleanInput($type, $model, $attribute, $options = [])
{
    $name = isset($options['name']) ? $options['name'] : static::getInputName($model, $attribute);
    $value = static::getAttributeValue($model, $attribute);
    if (!array_key_exists('value', $options)) {
        $options['value'] = '1';
    }
    if (!array_key_exists('uncheck', $options)) {
        $options['uncheck'] = '0';
    } elseif ($options['uncheck'] === false) {
        unset($options['uncheck']);
    }
    if (!array_key_exists('label', $options)) {
        $options['label'] = static::encode($model->getAttributeLabel(static::getAttributeName($attribute)));
    } elseif ($options['label'] === false) {
        unset($options['label']);
    }
    $checked = "$value" === "{$options['value']}";
    if (!array_key_exists('id', $options)) {
        $options['id'] = static::getInputId($model, $attribute);
    }
    return static::$type($name, $checked, $options);
}

            
activeCheckbox() 公共静态方法

为给定的模型属性生成复选框标签及其标签。

此方法将根据模型属性值生成“checked”标签属性。

public static 字符串 activeCheckbox ( $model, $attribute, $options = [] )
$model yii\base\Model

模型对象

$attribute string

属性名称或表达式。有关属性表达式的格式,请参阅 getAttributeName()

$options array

以名称-值对形式表示的标签选项。有关接受的属性的详细信息,请参阅 booleanInput()

返回值 string

生成的复选框标签

                public static function activeCheckbox($model, $attribute, $options = [])
{
    return static::activeBooleanInput('checkbox', $model, $attribute, $options);
}

            
activeCheckboxList() 公共静态方法

生成复选框列表。

复选框列表允许进行多选,类似于 listBox()。因此,提交的相应值为数组。复选框列表的选择取自模型属性的值。

public static string activeCheckboxList ( $model, $attribute, $items, $options = [] )
$model yii\base\Model

模型对象

$attribute string

属性名称或表达式。有关属性表达式的格式,请参阅 getAttributeName()

$items array

用于生成复选框的数据项。数组键是复选框的值,数组值是相应的标签。

$options array

复选框列表容器标签的选项(名称 => 配置)。以下选项将被特殊处理

  • tag: string|false,容器元素的标签名称。设置为 false 则不渲染容器,仅渲染复选框。另请参阅 tag()
  • unselect: string,当未选中任何复选框时应提交的值。您可以将此选项设置为 null 以阻止提交默认值。如果未设置此选项,则将提交空字符串。
  • encode: boolean,是否对复选框标签进行 HTML 编码。默认为 true。如果设置了 item 选项,则忽略此选项。
  • separator: string,分隔项的 HTML 代码。
  • itemOptions: array,使用 checkbox() 生成复选框标签的选项。
  • item: callable,一个回调函数,可用于自定义生成对应于 $items 中单个项的 HTML 代码。此回调函数的签名必须为

    function ($index, $label, $name, $checked, $value)
    

    其中 $index 是复选框在整个列表中的从零开始的索引;$label 是复选框的标签;而 $name、$value 和 $checked 分别表示复选框输入的名称、值和选中状态。

有关如何渲染属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的复选框列表

                public static function activeCheckboxList($model, $attribute, $items, $options = [])
{
    return static::activeListInput('checkboxList', $model, $attribute, $items, $options);
}

            
activeDropDownList() 公共静态方法

为给定的模型属性生成下拉列表。

下拉列表的选择取自模型属性的值。

public static string activeDropDownList ( $model, $attribute, $items, $options = [] )
$model yii\base\Model

模型对象

$attribute string

属性名称或表达式。有关属性表达式的格式,请参阅 getAttributeName()

$items array

选项数据项。数组键是选项值,数组值是相应的选项标签。数组也可以嵌套(即某些数组值也是数组)。对于每个子数组,将生成一个选项组,其标签是与子数组关联的键。如果您有一组数据模型,您可以使用 yii\helpers\ArrayHelper::map() 将其转换为上述格式。

请注意,此方法会自动对值和标签进行 HTML 编码,并且标签中的空格也将进行 HTML 编码。

$options array

以名称-值对形式表示的标签选项。以下选项将被特殊处理

  • prompt: string,要显示为第一个选项的提示文本。从 2.0.11 版本开始,您可以使用数组来覆盖值并设置其他标签属性

    ['text' => 'Please select', 'options' => ['value' => 'none', 'class' => 'prompt', 'label' => 'Select']],
    
  • options: array,select 选项标签的属性。数组键必须是有效的选项值,数组值是相应选项标签的额外属性。例如,

    [
        'value1' => ['disabled' => true],
        'value2' => ['label' => 'value 2'],
    ];
    
  • groups: array,optgroup 标签的属性。其结构类似于“options”,只是数组键表示 $items 中指定的 optgroup 标签。
  • encodeSpaces: bool,是否使用   字符对选项提示和选项值中的空格进行编码。默认为 false。
  • encode: bool,是否对选项提示和选项值字符进行编码。默认为 true。此选项从 2.0.3 版本开始可用。

其余选项将呈现为结果标签的属性。值将使用 encode() 进行 HTML 编码。如果值为 null,则不会渲染相应的属性。有关如何渲染属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的下拉列表标签

                public static function activeDropDownList($model, $attribute, $items, $options = [])
{
    if (empty($options['multiple'])) {
        return static::activeListInput('dropDownList', $model, $attribute, $items, $options);
    }
    return static::activeListBox($model, $attribute, $items, $options);
}

            
activeFileInput() 公共静态方法

为给定的模型属性生成文件输入标签。

此方法将自动为模型属性生成“name”和“value”标签属性,除非它们在 $options 中被显式指定。此外,如果在 $options 中定义了一组单独的 HTML 选项数组,其键名为 hiddenOptions,则将其作为其自己的 $options 参数传递给 activeHiddenInput 字段。

public static string activeFileInput ( $model, $attribute, $options = [] )
$model yii\base\Model

模型对象

$attribute string

属性名称或表达式。有关属性表达式的格式,请参阅 getAttributeName()

$options array

以名称-值对形式表示的标签选项。这些将呈现为结果标签的属性。值将使用 encode() 进行 HTML 编码。有关如何渲染属性的详细信息,请参阅 renderTagAttributes()。如果定义了另一个 HTML 选项数组的 hiddenOptions 参数,则将其从 $options 中提取出来,用于隐藏输入。

返回值 string

生成的输入标签

                public static function activeFileInput($model, $attribute, $options = [])
{
    $hiddenOptions = ['id' => null, 'value' => ''];
    if (isset($options['name'])) {
        $hiddenOptions['name'] = $options['name'];
    }
    // make sure disabled input is not sending any value
    if (!empty($options['disabled'])) {
        $hiddenOptions['disabled'] = $options['disabled'];
    }
    $hiddenOptions = ArrayHelper::merge($hiddenOptions, ArrayHelper::remove($options, 'hiddenOptions', []));
    // Add a hidden field so that if a model only has a file field, we can
    // still use isset($_POST[$modelClass]) to detect if the input is submitted.
    // The hidden input will be assigned its own set of html options via `$hiddenOptions`.
    // This provides the possibility to interact with the hidden field via client script.
    // Note: For file-field-only model with `disabled` option set to `true` input submitting detection won't work.
    return static::activeHiddenInput($model, $attribute, $hiddenOptions)
        . static::activeInput('file', $model, $attribute, $options);
}

            
activeHiddenInput() 公共静态方法

为给定的模型属性生成隐藏输入标签。

此方法将自动为模型属性生成“name”和“value”标签属性,除非它们在 $options 中被显式指定。

public static string activeHiddenInput ( $model, $attribute, $options = [] )
$model yii\base\Model

模型对象

$attribute string

属性名称或表达式。有关属性表达式的格式,请参阅 getAttributeName()

$options array

以名称-值对形式表示的标签选项。这些将呈现为结果标签的属性。值将使用 encode() 进行 HTML 编码。有关如何渲染属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的输入标签

                public static function activeHiddenInput($model, $attribute, $options = [])
{
    return static::activeInput('hidden', $model, $attribute, $options);
}

            
activeHint() 公共静态方法 (自 2.0.4 版本起可用)

为给定的模型属性生成提示标签。

提示文本是与属性关联的提示,通过 yii\base\Model::getAttributeHint() 获取。如果无法获取提示内容,则方法将返回空字符串。

public static string activeHint ( $model, $attribute, $options = [] )
$model yii\base\Model

模型对象

$attribute string

属性名称或表达式。有关属性表达式的格式,请参阅 getAttributeName()

$options array

以名称-值对形式表示的标签选项。这些将呈现为结果标签的属性。值将使用 encode() 进行 HTML 编码。如果值为 null,则不会渲染相应的属性。以下选项将被特殊处理

有关如何渲染属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的提示标签

                public static function activeHint($model, $attribute, $options = [])
{
    $attribute = static::getAttributeName($attribute);
    $hint = isset($options['hint']) ? $options['hint'] : $model->getAttributeHint($attribute);
    if (empty($hint)) {
        return '';
    }
    $tag = ArrayHelper::remove($options, 'tag', 'div');
    unset($options['hint']);
    return static::tag($tag, $hint, $options);
}

            
activeInput() 公共静态方法

为给定的模型属性生成输入标签。

此方法将自动为模型属性生成“name”和“value”标签属性,除非它们在 $options 中被显式指定。

public static string activeInput ( $type, $model, $attribute, $options = [] )
$type string

输入类型(例如“text”、“password”)

$model yii\base\Model

模型对象

$attribute string

属性名称或表达式。有关属性表达式的格式,请参阅 getAttributeName()

$options array

以名称-值对形式表示的标签选项。这些将呈现为结果标签的属性。值将使用 encode() 进行 HTML 编码。有关如何渲染属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的输入标签

                public static function activeInput($type, $model, $attribute, $options = [])
{
    $name = isset($options['name']) ? $options['name'] : static::getInputName($model, $attribute);
    $value = isset($options['value']) ? $options['value'] : static::getAttributeValue($model, $attribute);
    if (!array_key_exists('id', $options)) {
        $options['id'] = static::getInputId($model, $attribute);
    }
    static::setActivePlaceholder($model, $attribute, $options);
    self::normalizeMaxLength($model, $attribute, $options);
    return static::input($type, $name, $value, $options);
}

            
activeLabel() 公共静态方法

为给定的模型属性生成标签标签。

标签文本是与属性关联的标签,通过 yii\base\Model::getAttributeLabel() 获取。

public static 字符串 activeLabel ( $model, $attribute, $options = [] )
$model yii\base\Model

模型对象

$attribute string

属性名称或表达式。有关属性表达式的格式,请参阅 getAttributeName()

$options array

以名称-值对形式表示的标签选项。这些将呈现为结果标签的属性。值将使用 encode() 进行 HTML 编码。如果值为 null,则不会渲染相应的属性。以下选项将被特殊处理

有关如何渲染属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的标签标签

                public static function activeLabel($model, $attribute, $options = [])
{
    $for = ArrayHelper::remove($options, 'for', static::getInputId($model, $attribute));
    $attribute = static::getAttributeName($attribute);
    $label = ArrayHelper::remove($options, 'label', static::encode($model->getAttributeLabel($attribute)));
    return static::label($label, $for, $options);
}

            
activeListBox() 公共静态方法

生成列表框。

列表框的选择取自模型属性的值。

public static 字符串 activeListBox ( $model, $attribute, $items, $options = [] )
$model yii\base\Model

模型对象

$attribute string

属性名称或表达式。有关属性表达式的格式,请参阅 getAttributeName()

$items array

选项数据项。数组键是选项值,数组值是相应的选项标签。数组也可以嵌套(即某些数组值也是数组)。对于每个子数组,将生成一个选项组,其标签是与子数组关联的键。如果您有一组数据模型,您可以使用 yii\helpers\ArrayHelper::map() 将其转换为上述格式。

请注意,此方法会自动对值和标签进行 HTML 编码,并且标签中的空格也将进行 HTML 编码。

$options array

以名称-值对形式表示的标签选项。以下选项将被特殊处理

  • prompt: string,要显示为第一个选项的提示文本。从 2.0.11 版本开始,您可以使用数组来覆盖值并设置其他标签属性

    ['text' => 'Please select', 'options' => ['value' => 'none', 'class' => 'prompt', 'label' => 'Select']],
    
  • options: array,select 选项标签的属性。数组键必须是有效的选项值,数组值是相应选项标签的额外属性。例如,

    [
        'value1' => ['disabled' => true],
        'value2' => ['label' => 'value 2'],
    ];
    
  • groups: array,optgroup 标签的属性。其结构类似于“options”,只是数组键表示 $items 中指定的 optgroup 标签。
  • unselect: 字符串,当未选择任何选项时将提交的值。设置此属性时,将生成一个隐藏字段,以便在多选模式下未选择任何选项时,我们仍然可以获取发布的 unselect 值。
  • encodeSpaces: bool,是否使用   字符对选项提示和选项值中的空格进行编码。默认为 false。
  • encode: bool,是否对选项提示和选项值字符进行编码。默认为 true。此选项从 2.0.3 版本开始可用。

其余选项将呈现为结果标签的属性。值将使用 encode() 进行 HTML 编码。如果值为 null,则不会渲染相应的属性。有关如何渲染属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的列表框标签

                public static function activeListBox($model, $attribute, $items, $options = [])
{
    return static::activeListInput('listBox', $model, $attribute, $items, $options);
}

            
activeListInput() 受保护的静态方法

生成输入字段列表。

此方法主要由activeListBox()activeRadioList()activeCheckboxList() 调用。

protected static 字符串 activeListInput ( $type, $model, $attribute, $items, $options = [] )
$type string

输入类型。可以是“listBox”、“radioList”或“checkBoxList”。

$model yii\base\Model

模型对象

$attribute string

属性名称或表达式。有关属性表达式的格式,请参阅 getAttributeName()

$items array

用于生成输入字段的数据项。数组键是输入值,数组值是相应的标签。

$options array

输入列表的选项(名称=>配置)。支持的特殊选项取决于$type指定的输入类型。

返回值 string

生成的输入列表

                protected static function activeListInput($type, $model, $attribute, $items, $options = [])
{
    $name = ArrayHelper::remove($options, 'name', static::getInputName($model, $attribute));
    $selection = ArrayHelper::remove($options, 'value', static::getAttributeValue($model, $attribute));
    if (!array_key_exists('unselect', $options)) {
        $options['unselect'] = '';
    }
    if (!array_key_exists('id', $options)) {
        $options['id'] = static::getInputId($model, $attribute);
    }
    return static::$type($name, $selection, $items, $options);
}

            
activePasswordInput() 公共静态方法

为给定的模型属性生成密码输入标签。

此方法将自动为模型属性生成“name”和“value”标签属性,除非它们在 $options 中被显式指定。

public static 字符串 activePasswordInput ( $model, $attribute, $options = [] )
$model yii\base\Model

模型对象

$attribute string

属性名称或表达式。有关属性表达式的格式,请参阅 getAttributeName()

$options array

标签选项,以名称-值对的形式表示。这些将被渲染为生成的标签的属性。值将使用encode() 进行 HTML 编码。有关属性如何渲染的详细信息,请参阅renderTagAttributes()。识别以下特殊选项

  • maxlength: 整数|布尔值,当maxlength设置为 true 且模型属性由字符串验证器验证时,maxlength选项将采用yii\validators\StringValidator::$max 和[[\yii\validators\StringValidator::length] 的最大值。此功能自 2.0.6 版本起可用,并自 2.0.42 版本起改进为考虑length
  • placeholder: 字符串|布尔值,当placeholder等于true时,将使用$model中的属性标签作为占位符(此行为自 2.0.14 版本起可用)。
返回值 string

生成的输入标签

                public static function activePasswordInput($model, $attribute, $options = [])
{
    return static::activeInput('password', $model, $attribute, $options);
}

            
activeRadio() 公共静态方法

为给定的模型属性生成单选按钮标签及其标签。

此方法将根据模型属性值生成“checked”标签属性。

public static 字符串 activeRadio ( $model, $attribute, $options = [] )
$model yii\base\Model

模型对象

$attribute string

属性名称或表达式。有关属性表达式的格式,请参阅 getAttributeName()

$options array

以名称-值对形式表示的标签选项。有关接受的属性的详细信息,请参阅 booleanInput()

返回值 string

生成的单选按钮标签

                public static function activeRadio($model, $attribute, $options = [])
{
    return static::activeBooleanInput('radio', $model, $attribute, $options);
}

            
activeRadioList() 公共静态方法

生成单选按钮列表。

单选按钮列表类似于复选框列表,但它只允许单选。单选按钮的选择取自模型属性的值。

public static 字符串 activeRadioList ( $model, $attribute, $items, $options = [] )
$model yii\base\Model

模型对象

$attribute string

属性名称或表达式。有关属性表达式的格式,请参阅 getAttributeName()

$items array

用于生成单选按钮的数据项。数组键是单选值,数组值是相应的标签。

$options array

单选按钮列表容器标签的选项(名称=>配置)。以下选项将被特殊处理

  • tag: 字符串|false,容器元素的标签名称。为 false 表示不带容器渲染单选按钮。另请参阅tag()
  • unselect: 字符串,当没有选中任何单选按钮时应提交的值。您可以将此选项设置为 null 以防止提交默认值。如果未设置此选项,则将提交空字符串。
  • encode: boolean,是否对复选框标签进行 HTML 编码。默认为 true。如果设置了 item 选项,则忽略此选项。
  • separator: string,分隔项的 HTML 代码。
  • itemOptions: 数组,使用radio() 生成单选按钮标签的选项。
  • item: callable,一个回调函数,可用于自定义生成对应于 $items 中单个项的 HTML 代码。此回调函数的签名必须为

    function ($index, $label, $name, $checked, $value)
    

    其中$index是单选按钮在整个列表中的从零开始的索引;$label是单选按钮的标签;$name、$value和$checked分别表示单选按钮输入的名称、值和选中状态。

有关如何渲染属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的单选按钮列表

                public static function activeRadioList($model, $attribute, $items, $options = [])
{
    return static::activeListInput('radioList', $model, $attribute, $items, $options);
}

            
activeTextInput() 公共静态方法

为给定的模型属性生成文本输入标签。

此方法将自动为模型属性生成“name”和“value”标签属性,除非它们在 $options 中被显式指定。

public static 字符串 activeTextInput ( $model, $attribute, $options = [] )
$model yii\base\Model

模型对象

$attribute string

属性名称或表达式。有关属性表达式的格式,请参阅 getAttributeName()

$options array

标签选项,以名称-值对的形式表示。这些将被渲染为生成的标签的属性。值将使用encode() 进行 HTML 编码。有关属性如何渲染的详细信息,请参阅renderTagAttributes()。识别以下特殊选项

  • maxlength: 整数|布尔值,当maxlength设置为 true 且模型属性由字符串验证器验证时,maxlength选项将采用yii\validators\StringValidator::$max 和[[\yii\validators\StringValidator::length] 的最大值。此功能自 2.0.3 版本起可用,并自 2.0.42 版本起改进为考虑length
  • placeholder: 字符串|布尔值,当placeholder等于true时,将使用$model中的属性标签作为占位符(此行为自 2.0.14 版本起可用)。
返回值 string

生成的输入标签

                public static function activeTextInput($model, $attribute, $options = [])
{
    return static::activeInput('text', $model, $attribute, $options);
}

            
activeTextarea() 公共静态方法

为给定的模型属性生成文本区域标签。

模型属性值将用作文本区域中的内容。

public static 字符串 activeTextarea ( $model, $attribute, $options = [] )
$model yii\base\Model

模型对象

$attribute string

属性名称或表达式。有关属性表达式的格式,请参阅 getAttributeName()

$options array

标签选项,以名称-值对的形式表示。这些将被渲染为生成的标签的属性。值将使用encode() 进行 HTML 编码。有关属性如何渲染的详细信息,请参阅renderTagAttributes()。识别以下特殊选项

  • maxlength: 整数|布尔值,当maxlength设置为 true 且模型属性由字符串验证器验证时,maxlength选项将采用yii\validators\StringValidator::$max 和[[\yii\validators\StringValidator::length] 的最大值。此功能自 2.0.6 版本起可用,并自 2.0.42 版本起改进为考虑length
  • placeholder: 字符串|布尔值,当placeholder等于true时,将使用$model中的属性标签作为占位符(此行为自 2.0.14 版本起可用)。
返回值 string

生成的文本区域标签

                public static function activeTextarea($model, $attribute, $options = [])
{
    $name = isset($options['name']) ? $options['name'] : static::getInputName($model, $attribute);
    if (isset($options['value'])) {
        $value = $options['value'];
        unset($options['value']);
    } else {
        $value = static::getAttributeValue($model, $attribute);
    }
    if (!array_key_exists('id', $options)) {
        $options['id'] = static::getInputId($model, $attribute);
    }
    self::normalizeMaxLength($model, $attribute, $options);
    static::setActivePlaceholder($model, $attribute, $options);
    return static::textarea($name, $value, $options);
}

            
addCssClass() 公共静态方法

将 CSS 类(或多个类)添加到指定的选项中。

如果 CSS 类已存在于选项中,则不会再次添加。如果给定选项中的类规范是数组,并且某些类以命名(字符串)键的形式放置在那里,则覆盖此类键将无效。例如

$options = ['class' => ['persistent' => 'initial']];
Html::addCssClass($options, ['persistent' => 'override']);
var_dump($options['class']); // outputs: array('persistent' => 'initial');

另请参阅removeCssClass()

public static void addCssClass ( &$options, $class )
$options array

要修改的选项。

$class 字符串|数组

要添加的 CSS 类。

                public static function addCssClass(&$options, $class)
{
    if (isset($options['class'])) {
        if (is_array($options['class'])) {
            $options['class'] = self::mergeCssClasses($options['class'], (array) $class);
        } else {
            $classes = preg_split('/\s+/', $options['class'], -1, PREG_SPLIT_NO_EMPTY);
            $options['class'] = implode(' ', self::mergeCssClasses($classes, (array) $class));
        }
    } else {
        $options['class'] = $class;
    }
}

            
addCssStyle() 公共静态方法

将指定的 CSS 样式添加到 HTML 选项中。

如果选项已经包含一个 style 元素,则新样式将与现有样式合并。如果新旧样式中都存在 CSS 属性,则如果 $overwrite 为 true,则可能会覆盖旧样式。

例如:

Html::addCssStyle($options, 'width: 100px; height: 200px');

另请参阅

public static void addCssStyle ( &$options, $style, $overwrite true )
$options array

要修改的 HTML 选项。

$style 字符串|数组

新的样式字符串(例如 'width: 100px; height: 200px')或数组(例如 ['width' => '100px', 'height' => '200px'])。

$overwrite boolean

如果新样式也包含现有 CSS 属性,是否覆盖它们。

                public static function addCssStyle(&$options, $style, $overwrite = true)
{
    if (!empty($options['style'])) {
        $oldStyle = is_array($options['style']) ? $options['style'] : static::cssStyleToArray($options['style']);
        $newStyle = is_array($style) ? $style : static::cssStyleToArray($style);
        if (!$overwrite) {
            foreach ($newStyle as $property => $value) {
                if (isset($oldStyle[$property])) {
                    unset($newStyle[$property]);
                }
            }
        }
        $style = array_merge($oldStyle, $newStyle);
    }
    $options['style'] = is_array($style) ? static::cssStyleFromArray($style) : $style;
}

            
beginForm() 公共静态方法

生成表单开始标签。

另请参阅 endForm()

public static 字符串 beginForm ( $action '', $method 'post', $options = [] )
$action 数组|字符串

表单操作 URL。此参数将由 yii\helpers\Url::to() 处理。

$method string

表单提交方法,例如“post”、“get”、“put”、“delete”(不区分大小写)。由于大多数浏览器仅支持“post”和“get”,因此如果给出其他方法,则将使用“post”模拟它们,并将添加一个包含实际方法类型的隐藏输入。有关更多详细信息,请参阅 yii\web\Request::$methodParam

$options array

以名称-值对形式表示的标签选项。这些将呈现为生成的标签的属性。值将使用 encode() 进行 HTML 编码。如果值为 null,则不会呈现相应的属性。有关如何呈现属性的详细信息,请参阅 renderTagAttributes()

特殊选项

  • csrf:是否生成 CSRF 隐藏输入。默认为 true。
返回值 string

生成的表单开始标签。

                public static function beginForm($action = '', $method = 'post', $options = [])
{
    $action = Url::to($action);
    $hiddenInputs = [];
    $request = Yii::$app->getRequest();
    if ($request instanceof Request) {
        if (strcasecmp($method, 'get') && strcasecmp($method, 'post')) {
            // simulate PUT, DELETE, etc. via POST
            $hiddenInputs[] = static::hiddenInput($request->methodParam, $method);
            $method = 'post';
        }
        $csrf = ArrayHelper::remove($options, 'csrf', true);
        if ($csrf && $request->enableCsrfValidation && strcasecmp($method, 'post') === 0) {
            $hiddenInputs[] = static::hiddenInput($request->csrfParam, $request->getCsrfToken());
        }
    }
    if (!strcasecmp($method, 'get') && ($pos = strpos($action, '?')) !== false) {
        // query parameters in the action are ignored for GET method
        // we use hidden fields to add them back
        foreach (explode('&', substr($action, $pos + 1)) as $pair) {
            if (($pos1 = strpos($pair, '=')) !== false) {
                $hiddenInputs[] = static::hiddenInput(
                    urldecode(substr($pair, 0, $pos1)),
                    urldecode(substr($pair, $pos1 + 1))
                );
            } else {
                $hiddenInputs[] = static::hiddenInput(urldecode($pair), '');
            }
        }
        $action = substr($action, 0, $pos);
    }
    $options['action'] = $action;
    $options['method'] = $method;
    $form = static::beginTag('form', $options);
    if (!empty($hiddenInputs)) {
        $form .= "\n" . implode("\n", $hiddenInputs);
    }
    return $form;
}

            
beginTag() 公共静态方法

生成开始标签。

另请参阅

public static 字符串 beginTag ( $name, $options = [] )
$name 字符串|布尔值|空值

标签名称。如果 $name 为 nullfalse,则相应的内容将在没有任何标签的情况下呈现。

$options array

以名称-值对形式表示的标签选项。这些将呈现为生成的标签的属性。值将使用 encode() 进行 HTML 编码。如果值为 null,则不会呈现相应的属性。有关如何呈现属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的开始标签

                public static function beginTag($name, $options = [])
{
    if ($name === null || $name === false) {
        return '';
    }
    return "<$name" . static::renderTagAttributes($options) . '>';
}

            
booleanInput() 受保护的静态方法 (自版本 2.0.9 起可用)

生成布尔输入。

protected static 字符串 booleanInput ( $type, $name, $checked false, $options = [] )
$type string

输入类型。这可以是radiocheckbox

$name string

name 属性。

$checked boolean

复选框是否应选中。

$options array

以名称-值对形式表示的标签选项。以下选项将被特殊处理

  • uncheck: 字符串,与复选框的未选中状态关联的值。当此属性存在时,将生成一个隐藏输入,以便如果复选框未选中并提交,则此属性的值仍将通过隐藏输入提交到服务器。
  • label: 字符串,复选框旁边显示的标签。它不会进行 HTML 编码。因此,您可以传入 HTML 代码(例如图像标签)。如果此标签来自最终用户,则应 encode() 它以防止 XSS 攻击。当指定此选项时,复选框将用标签标签括起来。
  • labelOptions: 数组,标签标签的 HTML 属性。除非设置了“label”选项,否则不要设置此选项。

其余选项将呈现为生成的复选框标签的属性。值将使用 encode() 进行 HTML 编码。如果值为 null,则不会呈现相应的属性。有关如何呈现属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的复选框标签

                protected static function booleanInput($type, $name, $checked = false, $options = [])
{
    // 'checked' option has priority over $checked argument
    if (!isset($options['checked'])) {
        $options['checked'] = (bool) $checked;
    }
    $value = array_key_exists('value', $options) ? $options['value'] : '1';
    if (isset($options['uncheck'])) {
        // add a hidden field so that if the checkbox is not selected, it still submits a value
        $hiddenOptions = [];
        if (isset($options['form'])) {
            $hiddenOptions['form'] = $options['form'];
        }
        // make sure disabled input is not sending any value
        if (!empty($options['disabled'])) {
            $hiddenOptions['disabled'] = $options['disabled'];
        }
        $hidden = static::hiddenInput($name, $options['uncheck'], $hiddenOptions);
        unset($options['uncheck']);
    } else {
        $hidden = '';
    }
    if (isset($options['label'])) {
        $label = $options['label'];
        $labelOptions = isset($options['labelOptions']) ? $options['labelOptions'] : [];
        unset($options['label'], $options['labelOptions']);
        $content = static::label(static::input($type, $name, $value, $options) . ' ' . $label, null, $labelOptions);
        return $hidden . $content;
    }
    return $hidden . static::input($type, $name, $value, $options);
}

            
button() 公共静态方法

生成按钮标签。

public static 字符串 button ( $content 'Button', $options = [] )
$content string

按钮标签内包含的内容。它不会进行 HTML 编码。因此,您可以传入 HTML 代码(例如图像标签)。如果此标签来自最终用户,则应考虑 encode() 它以防止 XSS 攻击。

$options array

以名称-值对形式表示的标签选项。这些将呈现为生成的标签的属性。值将使用 encode() 进行 HTML 编码。如果值为 null,则不会呈现相应的属性。有关如何呈现属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的按钮标签

                public static function button($content = 'Button', $options = [])
{
    if (!isset($options['type'])) {
        $options['type'] = 'button';
    }
    return static::tag('button', $content, $options);
}

            
buttonInput() 公共静态方法

生成输入按钮。

public static 字符串 buttonInput ( $label 'Button', $options = [] )
$label 字符串|空值

value 属性。如果为 null,则不会生成 value 属性。

$options array

以名称-值对形式表示的标签选项。这些将呈现为生成的标签的属性。值将使用 encode() 进行 HTML 编码。如果值为 null,则不会呈现相应的属性。有关如何呈现属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的按钮标签

                public static function buttonInput($label = 'Button', $options = [])
{
    $options['type'] = 'button';
    $options['value'] = $label;
    return static::tag('input', '', $options);
}

            
checkbox() 公共静态方法

生成复选框输入。

public static 字符串 checkbox ( $name, $checked false, $options = [] )
$name string

name 属性。

$checked boolean

复选框是否应选中。

$options array

以名称-值对形式表示的标签选项。有关接受的属性的详细信息,请参阅 booleanInput()

返回值 string

生成的复选框标签

                public static function checkbox($name, $checked = false, $options = [])
{
    return static::booleanInput('checkbox', $name, $checked, $options);
}

            
checkboxList() 公共静态方法

生成复选框列表。

复选框列表允许进行多选,例如 listBox()。因此,相应的提交值是一个数组。

public static 字符串 checkboxList ( $name, $selection null, $items = [], $options = [] )
$name string

每个复选框的 name 属性。

$selection 字符串|数组|空值

选定的值。字符串用于单选,数组用于多选。

$items array

用于生成复选框的数据项。数组键是复选框值,而数组值是相应的标签。

$options array

复选框列表容器标签的选项(名称 => 配置)。以下选项将被特殊处理

  • tag: string|false,容器元素的标签名称。设置为 false 则不渲染容器,仅渲染复选框。另请参阅 tag()
  • unselect: 字符串,当未选中任何复选框时应提交的值。通过设置此选项,将生成一个隐藏输入。
  • disabled: 布尔值,由 unselect 选项生成的隐藏输入是否应禁用。默认为 false。此选项自版本 2.0.16 起可用。
  • encode: boolean,是否对复选框标签进行 HTML 编码。默认为 true。如果设置了 item 选项,则忽略此选项。
  • strict: 布尔值,如果 $selection 是一个数组并且此值为 true,则将在 $items 键上执行严格比较。默认为 false。此选项自 2.0.37 起可用。
  • separator: string,分隔项的 HTML 代码。
  • itemOptions: array,使用 checkbox() 生成复选框标签的选项。
  • item: callable,一个回调函数,可用于自定义生成对应于 $items 中单个项的 HTML 代码。此回调函数的签名必须为

    function ($index, $label, $name, $checked, $value)
    

    其中 $index 是复选框在整个列表中的从零开始的索引;$label 是复选框的标签;$name、$value 和 $checked 分别表示复选框输入的名称、值和选中状态。

有关如何渲染属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的复选框列表

                public static function checkboxList($name, $selection = null, $items = [], $options = [])
{
    if (substr($name, -2) !== '[]') {
        $name .= '[]';
    }
    if (ArrayHelper::isTraversable($selection)) {
        $selection = array_map('strval', ArrayHelper::toArray($selection));
    }
    $formatter = ArrayHelper::remove($options, 'item');
    $itemOptions = ArrayHelper::remove($options, 'itemOptions', []);
    $encode = ArrayHelper::remove($options, 'encode', true);
    $separator = ArrayHelper::remove($options, 'separator', "\n");
    $tag = ArrayHelper::remove($options, 'tag', 'div');
    $strict = ArrayHelper::remove($options, 'strict', false);
    $lines = [];
    $index = 0;
    foreach ($items as $value => $label) {
        $checked = $selection !== null &&
            (!ArrayHelper::isTraversable($selection) && !strcmp($value, $selection)
                || ArrayHelper::isTraversable($selection) && ArrayHelper::isIn((string)$value, $selection, $strict));
        if ($formatter !== null) {
            $lines[] = call_user_func($formatter, $index, $label, $name, $checked, $value);
        } else {
            $lines[] = static::checkbox($name, $checked, array_merge([
                'value' => $value,
                'label' => $encode ? static::encode($label) : $label,
            ], $itemOptions));
        }
        $index++;
    }
    if (isset($options['unselect'])) {
        // add a hidden field so that if the list box has no option being selected, it still submits a value
        $name2 = substr($name, -2) === '[]' ? substr($name, 0, -2) : $name;
        $hiddenOptions = [];
        // make sure disabled input is not sending any value
        if (!empty($options['disabled'])) {
            $hiddenOptions['disabled'] = $options['disabled'];
        }
        $hidden = static::hiddenInput($name2, $options['unselect'], $hiddenOptions);
        unset($options['unselect'], $options['disabled']);
    } else {
        $hidden = '';
    }
    $visibleContent = implode($separator, $lines);
    if ($tag === false) {
        return $hidden . $visibleContent;
    }
    return $hidden . static::tag($tag, $visibleContent, $options);
}

            
csrfMetaTags() 公共静态方法

生成包含 CSRF 令牌信息的元标签。

另请参阅 yii\web\Request::$enableCsrfValidation

public static string csrfMetaTags ( )
返回值 string

生成的元标记

                public static function csrfMetaTags()
{
    $request = Yii::$app->getRequest();
    if ($request instanceof Request && $request->enableCsrfValidation) {
        return static::tag('meta', '', ['name' => 'csrf-param', 'content' => $request->csrfParam]) . "\n"
            . static::tag('meta', '', ['name' => 'csrf-token', 'content' => $request->getCsrfToken()]) . "\n";
    }
    return '';
}

            
cssFile() 公共静态方法

生成引用外部 CSS 文件的链接标签。

另请参阅 yii\helpers\Url::to()

public static string cssFile ( $url, $options = [] )
$url 数组|字符串

外部 CSS 文件的 URL。此参数将由 yii\helpers\Url::to() 处理。

$options array

以名称-值对形式表示的标签选项。以下选项将被特殊处理

  • condition:指定 IE 的条件注释,例如 lt IE 9。指定此选项时,生成的 link 标记将包含在条件注释中。这主要用于支持旧版本的 IE 浏览器。
  • noscript:如果设置为 true,则 link 标记将包装在 <noscript> 标记中。

其余选项将呈现为生成的链接标记的属性。值将使用 encode() 进行 HTML 编码。如果值为 null,则不会呈现相应的属性。有关如何呈现属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的链接标记

                public static function cssFile($url, $options = [])
{
    if (!isset($options['rel'])) {
        $options['rel'] = 'stylesheet';
    }
    $options['href'] = Url::to($url);
    if (isset($options['condition'])) {
        $condition = $options['condition'];
        unset($options['condition']);
        return self::wrapIntoCondition(static::tag('link', '', $options), $condition);
    } elseif (isset($options['noscript']) && $options['noscript'] === true) {
        unset($options['noscript']);
        return '<noscript>' . static::tag('link', '', $options) . '</noscript>';
    }
    return static::tag('link', '', $options);
}

            
cssStyleFromArray() 公共静态方法

将 CSS 样式数组转换为字符串表示形式。

例如:

print_r(Html::cssStyleFromArray(['width' => '100px', 'height' => '200px']));
// will display: 'width: 100px; height: 200px;'
public static string cssStyleFromArray ( array $style )
$style array

CSS 样式数组。数组键是 CSS 属性名称,数组值是相应的 CSS 属性值。

返回值 string

CSS 样式字符串。如果 CSS 样式为空,则返回 null。

                public static function cssStyleFromArray(array $style)
{
    $result = '';
    foreach ($style as $name => $value) {
        $result .= "$name: $value; ";
    }
    // return null if empty to avoid rendering the "style" attribute
    return $result === '' ? null : rtrim($result);
}

            
cssStyleToArray() 公共静态方法

将 CSS 样式字符串转换为数组表示形式。

数组键是 CSS 属性名称,数组值是相应的 CSS 属性值。

例如:

print_r(Html::cssStyleToArray('width: 100px; height: 200px;'));
// will display: ['width' => '100px', 'height' => '200px']
public static array cssStyleToArray ( $style )
$style string

CSS 样式字符串

返回值 array

CSS 样式的数组表示形式

                public static function cssStyleToArray($style)
{
    $result = [];
    foreach (explode(';', $style) as $property) {
        $property = explode(':', $property);
        if (count($property) > 1) {
            $result[trim($property[0])] = trim($property[1]);
        }
    }
    return $result;
}

            
decode() 公共静态方法

将特殊的 HTML 实体解码回相应的字符。

这是 encode() 的反向操作。

另请参阅

public static string decode ( $content )
$content string

要解码的内容

返回值 string

解码后的内容

                public static function decode($content)
{
    return htmlspecialchars_decode($content, ENT_QUOTES);
}

            
encode() 公共静态方法

将特殊字符编码为 HTML 实体。

将使用 应用程序字符集 进行编码。

另请参阅

public static string encode ( $content, $doubleEncode true )
$content string

要编码的内容

$doubleEncode boolean

是否对 $content 中的 HTML 实体进行编码。如果为 false,则不会进一步编码 $content 中的 HTML 实体。

返回值 string

编码后的内容

                public static function encode($content, $doubleEncode = true)
{
    return htmlspecialchars((string)$content, ENT_QUOTES | ENT_SUBSTITUTE, Yii::$app ? Yii::$app->charset : 'UTF-8', $doubleEncode);
}

            
endForm() 公共静态方法

生成表单结束标签。

另请参阅 beginForm()

public static string endForm ( )
返回值 string

生成的标记

                public static function endForm()
{
    return '</form>';
}

            
endTag() 公共静态方法

生成结束标签。

另请参阅

public static string endTag ( $name )
$name 字符串|布尔值|空值

标签名称。如果 $name 为 nullfalse,则相应的内容将在没有任何标签的情况下呈现。

返回值 string

生成的结束标记

                public static function endTag($name)
{
    if ($name === null || $name === false) {
        return '';
    }
    return "</$name>";
}

            
error() 公共静态方法

生成包含指定模型属性的第一个验证错误的标签。

请注意,即使没有验证错误,此方法仍将返回一个空的错误标记。

public static string error ( $model, $attribute, $options = [] )
$model yii\base\Model

模型对象

$attribute string

属性名称或表达式。有关属性表达式的格式,请参阅 getAttributeName()

$options array

标记选项,以名称-值对的形式给出。值将使用 encode() 进行 HTML 编码。如果值为 null,则不会呈现相应的属性。

以下选项将被特殊处理

  • tag:指定标记名称。如果未设置,则使用“div”。另请参阅 tag()
  • encode:布尔值,如果设置为 false,则不会对错误消息进行编码。
  • errorSource(自 2.0.14 起):\Closure|callable,用于获取错误消息的回调函数。回调函数的签名必须为:function ($model, $attribute) 并返回一个字符串。如果未设置,则将调用 $model->getFirstError() 方法。

有关如何渲染属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的标签标签

                public static function error($model, $attribute, $options = [])
{
    $attribute = static::getAttributeName($attribute);
    $errorSource = ArrayHelper::remove($options, 'errorSource');
    if ($errorSource !== null) {
        $error = call_user_func($errorSource, $model, $attribute);
    } else {
        $error = $model->getFirstError($attribute);
    }
    $tag = ArrayHelper::remove($options, 'tag', 'div');
    $encode = ArrayHelper::remove($options, 'encode', true);
    return Html::tag($tag, $encode ? Html::encode($error) : $error, $options);
}

            
errorSummary() 公共静态方法

生成验证错误的摘要。

如果没有验证错误,仍然会生成一个空的错误摘要标记,但它将被隐藏。

public static string errorSummary ( $models, $options = [] )
$models yii\base\Model|yii\base\Model[]

要显示其验证错误的模型。

$options array

以名称-值对形式表示的标签选项。以下选项将被特殊处理

  • header:字符串,错误摘要的标题 HTML。如果未设置,则将使用默认提示字符串。
  • footer:字符串,错误摘要的页脚 HTML。默认为空字符串。
  • encode:布尔值,如果设置为 false,则不会对错误消息进行编码。默认为 true
  • showAllErrors:布尔值,如果设置为 true,则将显示每个属性的每个错误消息,否则仅显示每个属性的第一个错误消息。默认为 false。此选项自 2.0.10 起可用。
  • emptyClass:字符串,添加到空摘要的类名。

其余选项将呈现为容器标记的属性。

返回值 string

生成的错误摘要

                public static function errorSummary($models, $options = [])
{
    $header = isset($options['header']) ? $options['header'] : '<p>' . Yii::t('yii', 'Please fix the following errors:') . '</p>';
    $footer = ArrayHelper::remove($options, 'footer', '');
    $encode = ArrayHelper::remove($options, 'encode', true);
    $showAllErrors = ArrayHelper::remove($options, 'showAllErrors', false);
    $emptyClass = ArrayHelper::remove($options, 'emptyClass', null);
    unset($options['header']);
    $lines = self::collectErrors($models, $encode, $showAllErrors);
    if (empty($lines)) {
        // still render the placeholder for client-side validation use
        $content = '<ul></ul>';
        if ($emptyClass !== null) {
            $options['class'] = $emptyClass;
        } else {
            $options['style'] = isset($options['style']) ? rtrim($options['style'], ';') . '; display:none' : 'display:none';
        }
    } else {
        $content = '<ul><li>' . implode("</li>\n<li>", $lines) . '</li></ul>';
    }
    return Html::tag('div', $header . $content . $footer, $options);
}

            
escapeJsRegularExpression() 公共静态方法 (自版本 2.0.6 起可用)

转义正则表达式以在 JavaScript 中使用。

public static string escapeJsRegularExpression ( $regexp )
$regexp string

要转义的正则表达式。

返回值 string

转义后的结果。

                public static function escapeJsRegularExpression($regexp)
{
    $pattern = preg_replace('/\\\\x\{?([0-9a-fA-F]+)\}?/', '\u$1', $regexp);
    $deliminator = substr($pattern, 0, 1);
    $pos = strrpos($pattern, $deliminator, 1);
    $flag = substr($pattern, $pos + 1);
    if ($deliminator !== '/') {
        $pattern = '/' . str_replace('/', '\\/', substr($pattern, 1, $pos - 1)) . '/';
    } else {
        $pattern = substr($pattern, 0, $pos + 1);
    }
    if (!empty($flag)) {
        $pattern .= preg_replace('/[^igmu]/', '', $flag);
    }
    return $pattern;
}

            
fileInput() 公共静态方法

生成文件输入字段。

要使用文件输入字段,应将包含表单的“enctype”属性设置为“multipart/form-data”。表单提交后,可以通过 $_FILES[$name] 获取上传的文件信息(参见 PHP 文档)。

public static string fileInput ( $name, $value null, $options = [] )
$name string

name 属性。

$value 字符串|空值

value 属性。如果为 null,则不会生成 value 属性。

$options array

以名称-值对形式表示的标签选项。这些将呈现为生成的标签的属性。值将使用 encode() 进行 HTML 编码。如果值为 null,则不会呈现相应的属性。有关如何呈现属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的文件输入标签

                public static function fileInput($name, $value = null, $options = [])
{
    return static::input('file', $name, $value, $options);
}

            
getAttributeName() 公共静态方法

从给定的属性表达式返回真实的属性名称。

属性表达式是带有前缀和/或后缀数组索引的属性名称。它主要用于表格数据输入和/或数组类型输入。以下是一些示例

  • [0]content 用于表格数据输入,表示表格输入中第一个模型的“content”属性;
  • dates[0] 表示“dates”属性的第一个数组元素;
  • [0]dates[0] 表示表格输入中第一个模型的“dates”属性的第一个数组元素。

如果$attribute既没有前缀也没有后缀,则会原样返回。

public static string getAttributeName ( $attribute )
$attribute string

属性名称或表达式

返回值 string

没有前缀和后缀的属性名称。

抛出 yii\base\InvalidArgumentException

如果属性名称包含非单词字符。

                public static function getAttributeName($attribute)
{
    if (preg_match(static::$attributeRegex, $attribute, $matches)) {
        return $matches[2];
    }
    throw new InvalidArgumentException('Attribute name must contain word characters only.');
}

            
getAttributeValue() 公共静态方法

返回指定属性名称或表达式的值。

对于像[0]dates[0]这样的属性表达式,此方法将返回$model->dates[0]的值。有关属性表达式的更多详细信息,请参阅getAttributeName()

如果属性值是yii\db\ActiveRecordInterface的实例或此类实例的数组,则将返回AR实例的主键值。

public static string|array getAttributeValue ( $model, $attribute )
$model yii\base\Model

模型对象

$attribute string

属性名称或表达式

返回值 字符串|数组

相应的属性值

抛出 yii\base\InvalidArgumentException

如果属性名称包含非单词字符。

                public static function getAttributeValue($model, $attribute)
{
    if (!preg_match(static::$attributeRegex, $attribute, $matches)) {
        throw new InvalidArgumentException('Attribute name must contain word characters only.');
    }
    $attribute = $matches[2];
    $value = $model->$attribute;
    if ($matches[3] !== '') {
        foreach (explode('][', trim($matches[3], '[]')) as $id) {
            if ((is_array($value) || $value instanceof \ArrayAccess) && isset($value[$id])) {
                $value = $value[$id];
            } else {
                return null;
            }
        }
    }
    // https://github.com/yiisoft/yii2/issues/1457
    if (is_array($value)) {
        foreach ($value as $i => $v) {
            if ($v instanceof ActiveRecordInterface) {
                $v = $v->getPrimaryKey(false);
                $value[$i] = is_array($v) ? json_encode($v) : $v;
            }
        }
    } elseif ($value instanceof ActiveRecordInterface) {
        $value = $value->getPrimaryKey(false);
        return is_array($value) ? json_encode($value) : $value;
    }
    return $value;
}

            
getInputId() 公共静态方法

为指定的属性名称或表达式生成合适的输入 ID。

public static string getInputId ( $model, $attribute )
$model yii\base\Model

模型对象

$attribute string

属性名称或表达式。有关属性表达式的说明,请参阅getAttributeName()

返回值 string

生成的输入 ID。

抛出 yii\base\InvalidArgumentException

如果属性名称包含非单词字符。

                public static function getInputId($model, $attribute)
{
    $name = static::getInputName($model, $attribute);
    return static::getInputIdByName($name);
}

            
getInputIdByName() 公共静态方法 (自版本 2.0.43 起可用)

将输入名称转换为 ID。

例如,如果$namePost[content],则此方法将返回post-content

public static string getInputIdByName ( $name )
$name string

输入名称

返回值 string

生成的输入 ID

                public static function getInputIdByName($name)
{
    $charset = Yii::$app ? Yii::$app->charset : 'UTF-8';
    $name = mb_strtolower($name, $charset);
    return str_replace(['[]', '][', '[', ']', ' ', '.', '--'], ['', '-', '-', '', '-', '-', '-'], $name);
}

            
getInputName() 公共静态方法

为指定的属性名称或表达式生成合适的输入名称。

此方法生成一个名称,该名称可用作输入名称来收集指定属性的用户输入。名称是根据模型的表单名称和给定的属性名称生成的。例如,如果Post模型的表单名称为Post,则为content属性生成的输入名称将为Post[content]

有关属性表达式的说明,请参阅getAttributeName()

public static string getInputName ( $model, $attribute )
$model yii\base\Model

模型对象

$attribute string

属性名称或表达式

返回值 string

生成的输入名称

抛出 yii\base\InvalidArgumentException

如果属性名称包含非单词字符。

                public static function getInputName($model, $attribute)
{
    $formName = $model->formName();
    if (!preg_match(static::$attributeRegex, $attribute, $matches)) {
        throw new InvalidArgumentException('Attribute name must contain word characters only.');
    }
    $prefix = $matches[1];
    $attribute = $matches[2];
    $suffix = $matches[3];
    if ($formName === '' && $prefix === '') {
        return $attribute . $suffix;
    } elseif ($formName !== '') {
        return $formName . $prefix . "[$attribute]" . $suffix;
    }
    throw new InvalidArgumentException(get_class($model) . '::formName() cannot be empty for tabular inputs.');
}

            
hiddenInput() 公共静态方法

生成隐藏输入字段。

public static string hiddenInput ( $name, $value null, $options = [] )
$name string

name 属性。

$value 字符串|空值

value 属性。如果为 null,则不会生成 value 属性。

$options array

以名称-值对形式表示的标签选项。这些将呈现为生成的标签的属性。值将使用 encode() 进行 HTML 编码。如果值为 null,则不会呈现相应的属性。有关如何呈现属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的隐藏输入标签

                public static function hiddenInput($name, $value = null, $options = [])
{
    return static::input('hidden', $name, $value, $options);
}

            
img() 公共静态方法

生成图像标签。

public static string img ( $src, $options = [] )
$src 数组|字符串

图像 URL。此参数将由yii\helpers\Url::to()处理。

$options array

以名称-值对形式表示的标签选项。这些将呈现为生成的标签的属性。值将使用 encode() 进行 HTML 编码。如果值为 null,则不会呈现相应的属性。有关如何呈现属性的详细信息,请参阅 renderTagAttributes()

自版本 2.0.12 起,可以将srcset选项作为数组传递,其中键是描述符,值是 URL。所有 URL 都将由yii\helpers\Url::to()处理。

返回值 string

生成的图像标签。

                public static function img($src, $options = [])
{
    $options['src'] = Url::to($src);
    if (isset($options['srcset']) && is_array($options['srcset'])) {
        $srcset = [];
        foreach ($options['srcset'] as $descriptor => $url) {
            $srcset[] = Url::to($url) . ' ' . $descriptor;
        }
        $options['srcset'] = implode(',', $srcset);
    }
    if (!isset($options['alt'])) {
        $options['alt'] = '';
    }
    return static::tag('img', '', $options);
}

            
input() 公共静态方法

生成给定类型的输入类型。

public static string input ( $type, $name null, $value null, $options = [] )
$type string

type 属性。

$name 字符串|空值

name 属性。如果为 null,则不会生成 name 属性。

$value 字符串|空值

value 属性。如果为 null,则不会生成 value 属性。

$options array

以名称-值对形式表示的标签选项。这些将呈现为生成的标签的属性。值将使用 encode() 进行 HTML 编码。如果值为 null,则不会呈现相应的属性。有关如何呈现属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的输入标签

                public static function input($type, $name = null, $value = null, $options = [])
{
    if (!isset($options['type'])) {
        $options['type'] = $type;
    }
    $options['name'] = $name;
    $options['value'] = $value === null ? null : (string) $value;
    return static::tag('input', '', $options);
}

            
jsFile() 公共静态方法

生成引用外部 JavaScript 文件的脚本标签。

另请参阅 yii\helpers\Url::to()

public static 字符串 jsFile ( $url, $options = [] )
$url string

外部 JavaScript 文件的 URL。此参数将由 yii\helpers\Url::to() 处理。

$options array

标签选项,以名称-值对的形式给出。以下选项将被特殊处理

  • condition: 指定 IE 的条件注释,例如 lt IE 9。当指定此选项时,生成的 script 标签将包含在条件注释中。这主要用于支持旧版本的 IE 浏览器。

其余选项将呈现为生成的 script 标签的属性。值将使用 encode() 进行 HTML 编码。如果值为 null,则不会呈现相应的属性。有关如何呈现属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的 script 标签

                public static function jsFile($url, $options = [])
{
    $options['src'] = Url::to($url);
    if (isset($options['condition'])) {
        $condition = $options['condition'];
        unset($options['condition']);
        return self::wrapIntoCondition(static::tag('script', '', $options), $condition);
    }
    return static::tag('script', '', $options);
}

            
label() 公共静态方法

生成标签标签。

public static 字符串 label ( $content, $for null, $options = [] )
$content string

标签文本。它不会进行 HTML 编码。因此,您可以传入 HTML 代码,例如图像标签。如果此文本来自最终用户,则应 encode() 它以防止 XSS 攻击。

$for 字符串|空值

此标签关联的 HTML 元素的 ID。如果此值为 null,则不会生成“for”属性。

$options array

以名称-值对形式表示的标签选项。这些将呈现为生成的标签的属性。值将使用 encode() 进行 HTML 编码。如果值为 null,则不会呈现相应的属性。有关如何呈现属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的标签标签

                public static function label($content, $for = null, $options = [])
{
    $options['for'] = $for;
    return static::tag('label', $content, $options);
}

            
listBox() 公共静态方法

生成列表框。

public static 字符串 listBox ( $name, $selection null, $items = [], $options = [] )
$name string

输入名称

$selection string|boolean|array|null

选定的值。字符串用于单选,数组用于多选。

$items array

选项数据项。数组键是选项值,数组值是相应的选项标签。数组也可以嵌套(即某些数组值也是数组)。对于每个子数组,将生成一个选项组,其标签是与子数组关联的键。如果您有一组数据模型,您可以使用 yii\helpers\ArrayHelper::map() 将其转换为上述格式。

请注意,此方法会自动对值和标签进行 HTML 编码,并且标签中的空格也将进行 HTML 编码。

$options array

以名称-值对形式表示的标签选项。以下选项将被特殊处理

  • prompt: string,要显示为第一个选项的提示文本。从 2.0.11 版本开始,您可以使用数组来覆盖值并设置其他标签属性

    ['text' => 'Please select', 'options' => ['value' => 'none', 'class' => 'prompt', 'label' => 'Select']],
    
  • options: array,select 选项标签的属性。数组键必须是有效的选项值,数组值是相应选项标签的额外属性。例如,

    [
        'value1' => ['disabled' => true],
        'value2' => ['label' => 'value 2'],
    ];
    
  • groups: array,optgroup 标签的属性。其结构类似于“options”,只是数组键表示 $items 中指定的 optgroup 标签。
  • unselect: 字符串,当未选择任何选项时将提交的值。设置此属性时,将生成一个隐藏字段,以便在多选模式下未选择任何选项时,我们仍然可以获取发布的 unselect 值。
  • encodeSpaces: bool,是否使用 &nbsp; 字符对选项提示和选项值中的空格进行编码。默认为 false。
  • encode: bool,是否对选项提示和选项值字符进行编码。默认为 true。此选项从 2.0.3 版本开始可用。
  • strict: 布尔值,如果 $selection 是一个数组并且此值为 true,则将在 $items 键上执行严格比较。默认为 false。此选项自 2.0.37 起可用。

其余选项将呈现为结果标签的属性。值将使用 encode() 进行 HTML 编码。如果值为 null,则不会渲染相应的属性。有关如何渲染属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的列表框标签

                public static function listBox($name, $selection = null, $items = [], $options = [])
{
    if (!array_key_exists('size', $options)) {
        $options['size'] = 4;
    }
    if (!empty($options['multiple']) && !empty($name) && substr_compare($name, '[]', -2, 2)) {
        $name .= '[]';
    }
    $options['name'] = $name;
    if (isset($options['unselect'])) {
        // add a hidden field so that if the list box has no option being selected, it still submits a value
        if (!empty($name) && substr_compare($name, '[]', -2, 2) === 0) {
            $name = substr($name, 0, -2);
        }
        $hiddenOptions = [];
        // make sure disabled input is not sending any value
        if (!empty($options['disabled'])) {
            $hiddenOptions['disabled'] = $options['disabled'];
        }
        $hidden = static::hiddenInput($name, $options['unselect'], $hiddenOptions);
        unset($options['unselect']);
    } else {
        $hidden = '';
    }
    $selectOptions = static::renderSelectOptions($selection, $items, $options);
    return $hidden . static::tag('select', "\n" . $selectOptions . "\n", $options);
}

            
mailto() 公共静态方法

生成 mailto 超链接。

public static 字符串 mailto ( $text, $email null, $options = [] )
$text string

链接正文。它不会进行 HTML 编码。因此,您可以传入 HTML 代码(例如图像标签)。如果此内容来自最终用户,则应考虑使用 encode() 对其进行编码以防止 XSS 攻击。

$email 字符串|空值

电子邮件地址。如果此值为 null,则第一个参数(链接正文)将被视为电子邮件地址并使用。

$options array

以名称-值对形式表示的标签选项。这些将呈现为生成的标签的属性。值将使用 encode() 进行 HTML 编码。如果值为 null,则不会呈现相应的属性。有关如何呈现属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的 mailto 链接

                public static function mailto($text, $email = null, $options = [])
{
    $options['href'] = 'mailto:' . ($email === null ? $text : $email);
    return static::tag('a', $text, $options);
}

            
ol() 公共静态方法

生成有序列表。

public static 字符串 ol ( $items, $options = [] )
$items 数组|可遍历对象

用于生成列表的项目。每个项目生成一个列表项。请注意,如果 $options['encode'] 未设置或为 true,则项目将自动进行 HTML 编码。

$options array

单选按钮列表的选项(名称 => 配置)。支持以下选项

  • encode: 布尔值,是否对项目进行 HTML 编码。默认为 true。如果指定了 item 选项,则忽略此选项。
  • itemOptions: 数组,li 标签的 HTML 属性。如果指定了 item 选项,则忽略此选项。
  • item: 可调用对象,用于生成每个单独列表项的回调函数。此回调函数的签名必须为

    function ($item, $index)
    

    其中 $index 是对应于 $items$item 的数组键。回调函数应返回整个列表项标签。

有关如何渲染属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的排序列表。如果 $items 为空,则返回空字符串。

                public static function ol($items, $options = [])
{
    $options['tag'] = 'ol';
    return static::ul($items, $options);
}

            
passwordInput() 公共静态方法

生成密码输入字段。

public static 字符串 passwordInput ( $name, $value null, $options = [] )
$name string

name 属性。

$value 字符串|空值

value 属性。如果为 null,则不会生成 value 属性。

$options array

以名称-值对形式表示的标签选项。这些将呈现为生成的标签的属性。值将使用 encode() 进行 HTML 编码。如果值为 null,则不会呈现相应的属性。有关如何呈现属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的密码输入标签

                public static function passwordInput($name, $value = null, $options = [])
{
    return static::input('password', $name, $value, $options);
}

            
radio() 公共静态方法

生成单选按钮输入。

public static 字符串 radio ( $name, $checked false, $options = [] )
$name string

name 属性。

$checked boolean

是否应选中单选按钮。

$options array

以名称-值对形式表示的标签选项。有关接受的属性的详细信息,请参阅 booleanInput()

返回值 string

生成的单选按钮标签

                public static function radio($name, $checked = false, $options = [])
{
    return static::booleanInput('radio', $name, $checked, $options);
}

            
radioList() 公共静态方法

生成单选按钮列表。

单选按钮列表类似于复选框列表,但它只允许单选。

public static 字符串 radioList ( $name, $selection null, $items = [], $options = [] )
$name string

每个单选按钮的 name 属性。

$selection 字符串|数组|空值

选定的值。字符串用于单选,数组用于多选。

$items array

用于生成单选按钮的数据项。数组键是单选按钮的值,而数组值是相应的标签。

$options array

单选按钮列表容器标签的选项(名称=>配置)。以下选项将被特殊处理

  • tag: 字符串|false,容器元素的标签名称。为 false 表示不使用容器渲染单选按钮。另请参阅 tag()
  • unselect: 字符串,当未选中任何单选按钮时应提交的值。通过设置此选项,将生成一个隐藏输入。
  • disabled: 布尔值,由 unselect 选项生成的隐藏输入是否应禁用。默认为 false。此选项自版本 2.0.16 起可用。
  • encode: boolean,是否对复选框标签进行 HTML 编码。默认为 true。如果设置了 item 选项,则忽略此选项。
  • strict: 布尔值,如果 $selection 是一个数组并且此值为 true,则将在 $items 键上执行严格比较。默认为 false。此选项自 2.0.37 起可用。
  • separator: string,分隔项的 HTML 代码。
  • itemOptions: 数组,使用radio() 生成单选按钮标签的选项。
  • item: callable,一个回调函数,可用于自定义生成对应于 $items 中单个项的 HTML 代码。此回调函数的签名必须为

    function ($index, $label, $name, $checked, $value)
    

    其中 $index 是单选按钮在整个列表中的从零开始的索引;$label 是单选按钮的标签;$name、$value 和 $checked 分别表示单选按钮输入的名称、值和选中状态。

有关如何渲染属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的单选按钮列表

                public static function radioList($name, $selection = null, $items = [], $options = [])
{
    if (ArrayHelper::isTraversable($selection)) {
        $selection = array_map('strval', ArrayHelper::toArray($selection));
    }
    $formatter = ArrayHelper::remove($options, 'item');
    $itemOptions = ArrayHelper::remove($options, 'itemOptions', []);
    $encode = ArrayHelper::remove($options, 'encode', true);
    $separator = ArrayHelper::remove($options, 'separator', "\n");
    $tag = ArrayHelper::remove($options, 'tag', 'div');
    $strict = ArrayHelper::remove($options, 'strict', false);
    $hidden = '';
    if (isset($options['unselect'])) {
        // add a hidden field so that if the list box has no option being selected, it still submits a value
        $hiddenOptions = [];
        // make sure disabled input is not sending any value
        if (!empty($options['disabled'])) {
            $hiddenOptions['disabled'] = $options['disabled'];
        }
        $hidden =  static::hiddenInput($name, $options['unselect'], $hiddenOptions);
        unset($options['unselect'], $options['disabled']);
    }
    $lines = [];
    $index = 0;
    foreach ($items as $value => $label) {
        $checked = $selection !== null &&
            (!ArrayHelper::isTraversable($selection) && !strcmp($value, $selection)
                || ArrayHelper::isTraversable($selection) && ArrayHelper::isIn((string)$value, $selection, $strict));
        if ($formatter !== null) {
            $lines[] = call_user_func($formatter, $index, $label, $name, $checked, $value);
        } else {
            $lines[] = static::radio($name, $checked, array_merge([
                'value' => $value,
                'label' => $encode ? static::encode($label) : $label,
            ], $itemOptions));
        }
        $index++;
    }
    $visibleContent = implode($separator, $lines);
    if ($tag === false) {
        return $hidden . $visibleContent;
    }
    return $hidden . static::tag($tag, $visibleContent, $options);
}

            
removeCssClass() 公共静态方法

从指定的选项中删除 CSS 类。

另请参阅 addCssClass()

public static void removeCssClass ( &$options, $class )
$options array

要修改的选项。

$class 字符串|数组

要删除的 CSS 类。

                public static function removeCssClass(&$options, $class)
{
    if (isset($options['class'])) {
        if (is_array($options['class'])) {
            $classes = array_diff($options['class'], (array) $class);
            if (empty($classes)) {
                unset($options['class']);
            } else {
                $options['class'] = $classes;
            }
        } else {
            $classes = preg_split('/\s+/', $options['class'], -1, PREG_SPLIT_NO_EMPTY);
            $classes = array_diff($classes, (array) $class);
            if (empty($classes)) {
                unset($options['class']);
            } else {
                $options['class'] = implode(' ', $classes);
            }
        }
    }
}

            
removeCssStyle() 公共静态方法

从 HTML 选项中删除指定的 CSS 样式。

例如:

Html::removeCssStyle($options, ['width', 'height']);

另请参阅 addCssStyle()

public static void removeCssStyle ( &$options, $properties )
$options array

要修改的 HTML 选项。

$properties 字符串|数组

要删除的 CSS 属性。如果要删除单个属性,可以使用字符串。

                public static function removeCssStyle(&$options, $properties)
{
    if (!empty($options['style'])) {
        $style = is_array($options['style']) ? $options['style'] : static::cssStyleToArray($options['style']);
        foreach ((array) $properties as $property) {
            unset($style[$property]);
        }
        $options['style'] = static::cssStyleFromArray($style);
    }
}

            
renderSelectOptions() 公共静态方法

呈现可由 dropDownList()listBox() 使用的选项标签。

public static 字符串 renderSelectOptions ( $selection, $items, &$tagOptions = [] )
$selection 字符串|数组|布尔值|空值

选定的值。字符串/布尔值用于单选,数组用于多选。

$items array

选项数据项。数组键是选项值,数组值是相应的选项标签。数组也可以嵌套(即某些数组值也是数组)。对于每个子数组,将生成一个选项组,其标签是与子数组关联的键。如果您有一组数据模型,您可以使用 yii\helpers\ArrayHelper::map() 将其转换为上述格式。

请注意,此方法会自动对值和标签进行 HTML 编码,并且标签中的空格也将进行 HTML 编码。

$tagOptions array

传递给dropDownList()listBox() 调用的 $options 参数。此方法将剔除这些元素(如果有):"prompt"、"options" 和 "groups"。有关这些元素的说明,请参阅 dropDownList() 中的更多详细信息。

返回值 string

生成的列表选项

                public static function renderSelectOptions($selection, $items, &$tagOptions = [])
{
    if (ArrayHelper::isTraversable($selection)) {
        $normalizedSelection = [];
        foreach (ArrayHelper::toArray($selection) as $selectionItem) {
            if (is_bool($selectionItem)) {
                $normalizedSelection[] = $selectionItem ? '1' : '0';
            } else {
                $normalizedSelection[] = (string)$selectionItem;
            }
        }
        $selection = $normalizedSelection;
    } elseif (is_bool($selection)) {
        $selection = $selection ? '1' : '0';
    }
    $lines = [];
    $encodeSpaces = ArrayHelper::remove($tagOptions, 'encodeSpaces', false);
    $encode = ArrayHelper::remove($tagOptions, 'encode', true);
    $strict = ArrayHelper::remove($tagOptions, 'strict', false);
    if (isset($tagOptions['prompt'])) {
        $promptOptions = ['value' => ''];
        if (is_string($tagOptions['prompt'])) {
            $promptText = $tagOptions['prompt'];
        } else {
            $promptText = $tagOptions['prompt']['text'];
            $promptOptions = array_merge($promptOptions, $tagOptions['prompt']['options']);
        }
        $promptText = $encode ? static::encode($promptText) : $promptText;
        if ($encodeSpaces) {
            $promptText = str_replace(' ', '&nbsp;', $promptText);
        }
        $lines[] = static::tag('option', $promptText, $promptOptions);
    }
    $options = isset($tagOptions['options']) ? $tagOptions['options'] : [];
    $groups = isset($tagOptions['groups']) ? $tagOptions['groups'] : [];
    unset($tagOptions['prompt'], $tagOptions['options'], $tagOptions['groups']);
    $options['encodeSpaces'] = ArrayHelper::getValue($options, 'encodeSpaces', $encodeSpaces);
    $options['encode'] = ArrayHelper::getValue($options, 'encode', $encode);
    foreach ($items as $key => $value) {
        if (is_array($value)) {
            $groupAttrs = isset($groups[$key]) ? $groups[$key] : [];
            if (!isset($groupAttrs['label'])) {
                $groupAttrs['label'] = $key;
            }
            $attrs = ['options' => $options, 'groups' => $groups, 'encodeSpaces' => $encodeSpaces, 'encode' => $encode, 'strict' => $strict];
            $content = static::renderSelectOptions($selection, $value, $attrs);
            $lines[] = static::tag('optgroup', "\n" . $content . "\n", $groupAttrs);
        } else {
            $attrs = isset($options[$key]) ? $options[$key] : [];
            $attrs['value'] = (string) $key;
            if (!array_key_exists('selected', $attrs)) {
                $selected = false;
                if ($selection !== null) {
                    if (ArrayHelper::isTraversable($selection)) {
                        $selected = ArrayHelper::isIn((string)$key, $selection, $strict);
                    } elseif ($key === '' || $selection === '') {
                        $selected = $selection === $key;
                    } elseif ($strict) {
                        $selected = !strcmp((string)$key, (string)$selection);
                    } else {
                        $selected = $selection == $key;
                    }
                }
                $attrs['selected'] = $selected;
            }
            $text = $encode ? static::encode($value) : $value;
            if ($encodeSpaces) {
                $text = str_replace(' ', '&nbsp;', $text);
            }
            $lines[] = static::tag('option', $text, $attrs);
        }
    }
    return implode("\n", $lines);
}

            
renderTagAttributes() 公共静态方法

呈现 HTML 标签属性。

值为布尔类型属性将被视为 布尔属性

值为 null 的属性将不会渲染。

属性的值将使用 encode() 进行 HTML 编码。

ariadata 属性设置为数组值时,它们会得到特殊处理。在这些情况下,数组将被“展开”,并渲染一系列 ARIA/data 属性。例如,'aria' => ['role' => 'checkbox', 'value' => 'true'] 将被渲染为 aria-role="checkbox" aria-value="true"

如果嵌套的 data 值设置为数组,则它将被 JSON 编码。例如,'data' => ['params' => ['id' => 1, 'name' => 'yii']] 将被渲染为 data-params='{"id":1,"name":"yii"}'

另请参阅 addCssClass()

public static string renderTagAttributes ( $attributes )
$attributes array

要渲染的属性。属性值将使用 encode() 进行 HTML 编码。

返回值 string

渲染结果。如果属性不为空,则将其渲染为一个以空格开头(以便可以直接附加到标签名称中)的字符串。如果没有属性,则返回空字符串。

                public static function renderTagAttributes($attributes)
{
    if (count($attributes) > 1) {
        $sorted = [];
        foreach (static::$attributeOrder as $name) {
            if (isset($attributes[$name])) {
                $sorted[$name] = $attributes[$name];
            }
        }
        $attributes = array_merge($sorted, $attributes);
    }
    $html = '';
    foreach ($attributes as $name => $value) {
        if (is_bool($value)) {
            if ($value) {
                $html .= " $name";
            }
        } elseif (is_array($value)) {
            if (in_array($name, static::$dataAttributes)) {
                foreach ($value as $n => $v) {
                    if (is_array($v)) {
                        $html .= " $name-$n='" . Json::htmlEncode($v) . "'";
                    } elseif (is_bool($v)) {
                        if ($v) {
                            $html .= " $name-$n";
                        }
                    } elseif ($v !== null) {
                        $html .= " $name-$n=\"" . static::encode($v) . '"';
                    }
                }
            } elseif ($name === 'class') {
                if (empty($value)) {
                    continue;
                }
                if (static::$normalizeClassAttribute === true && count($value) > 1) {
                    // removes duplicate classes
                    $value = explode(' ', implode(' ', $value));
                    $value = array_unique($value);
                }
                $html .= " $name=\"" . static::encode(implode(' ', array_filter($value))) . '"';
            } elseif ($name === 'style') {
                if (empty($value)) {
                    continue;
                }
                $html .= " $name=\"" . static::encode(static::cssStyleFromArray($value)) . '"';
            } else {
                $html .= " $name='" . Json::htmlEncode($value) . "'";
            }
        } elseif ($value !== null) {
            $html .= " $name=\"" . static::encode($value) . '"';
        }
    }
    return $html;
}

            
resetButton() 公共静态方法

生成重置按钮标签。

public static string resetButton ( $content 'Reset', $options = [] )
$content string

按钮标签内包含的内容。它不会进行 HTML 编码。因此,您可以传入 HTML 代码(例如图像标签)。如果此标签来自最终用户,则应考虑 encode() 它以防止 XSS 攻击。

$options array

以名称-值对形式表示的标签选项。这些将呈现为生成的标签的属性。值将使用 encode() 进行 HTML 编码。如果值为 null,则不会呈现相应的属性。有关如何呈现属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的重置按钮标签

                public static function resetButton($content = 'Reset', $options = [])
{
    $options['type'] = 'reset';
    return static::button($content, $options);
}

            
resetInput() 公共静态方法

生成重置输入按钮。

public static string resetInput ( $label 'Reset', $options = [] )
$label 字符串|空值

value 属性。如果为 null,则不会生成 value 属性。

$options array

按钮标签的属性。值将使用 encode() 进行 HTML 编码。值为 null 的属性将被忽略,不会放入返回的标签中。有关如何渲染属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的按钮标签

                public static function resetInput($label = 'Reset', $options = [])
{
    $options['type'] = 'reset';
    $options['value'] = $label;
    return static::tag('input', '', $options);
}

            
script() 公共静态方法

生成脚本标签。

public static string script ( $content, $options = [] )
$content string

脚本内容

$options array

以名称-值对形式表示的标签选项。这些将呈现为生成的标签的属性。值将使用 encode() 进行 HTML 编码。如果值为 null,则不会呈现相应的属性。有关如何呈现属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的 script 标签

                public static function script($content, $options = [])
{
    return static::tag('script', $content, $options);
}

            
setActivePlaceholder() 受保护的静态方法 (自版本 2.0.14 起可用)

从模型属性标签生成占位符。

protected static void setActivePlaceholder ( $model, $attribute, &$options = [] )
$model yii\base\Model

模型对象

$attribute string

属性名称或表达式。有关属性表达式的格式,请参阅 getAttributeName()

$options array

以名称-值对形式表示的标签选项。这些将被渲染为结果标签的属性。值将使用 encode() 进行 HTML 编码。

                protected static function setActivePlaceholder($model, $attribute, &$options = [])
{
    if (isset($options['placeholder']) && $options['placeholder'] === true) {
        $attribute = static::getAttributeName($attribute);
        $options['placeholder'] = $model->getAttributeLabel($attribute);
    }
}

            
style() 公共静态方法

生成样式标签。

public static string style ( $content, $options = [] )
$content string

样式内容

$options array

以名称-值对形式表示的标签选项。这些将呈现为生成的标签的属性。值将使用 encode() 进行 HTML 编码。如果值为 null,则不会呈现相应的属性。有关如何呈现属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的样式标签

                public static function style($content, $options = [])
{
    return static::tag('style', $content, $options);
}

            
submitButton() 公共静态方法

生成提交按钮标签。

在命名表单元素(如提交按钮)时要小心。根据 jQuery 文档,某些保留名称可能会导致冲突,例如 submitlengthmethod

public static string submitButton ( $content 'Submit', $options = [] )
$content string

按钮标签内包含的内容。它不会进行 HTML 编码。因此,您可以传入 HTML 代码(例如图像标签)。如果此标签来自最终用户,则应考虑 encode() 它以防止 XSS 攻击。

$options array

以名称-值对形式表示的标签选项。这些将呈现为生成的标签的属性。值将使用 encode() 进行 HTML 编码。如果值为 null,则不会呈现相应的属性。有关如何呈现属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的提交按钮标签

                public static function submitButton($content = 'Submit', $options = [])
{
    $options['type'] = 'submit';
    return static::button($content, $options);
}

            
submitInput() 公共静态方法

生成提交输入按钮。

在命名表单元素(如提交按钮)时要小心。根据 jQuery 文档,某些保留名称可能会导致冲突,例如 submitlengthmethod

public static string submitInput ( $label 'Submit', $options = [] )
$label 字符串|空值

value 属性。如果为 null,则不会生成 value 属性。

$options array

以名称-值对形式表示的标签选项。这些将呈现为生成的标签的属性。值将使用 encode() 进行 HTML 编码。如果值为 null,则不会呈现相应的属性。有关如何呈现属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的按钮标签

                public static function submitInput($label = 'Submit', $options = [])
{
    $options['type'] = 'submit';
    $options['value'] = $label;
    return static::tag('input', '', $options);
}

            
tag() 公共静态方法

生成完整的 HTML 标签。

另请参阅

public static string tag ( $name, $content '', $options = [] )
$name 字符串|布尔值|空值

标签名称。如果 $name 为 nullfalse,则相应的内容将在没有任何标签的情况下呈现。

$content string

要包含在开始和结束标签之间的内容。它不会进行 HTML 编码。如果此内容来自最终用户,则应考虑使用 encode() 对其进行编码,以防止 XSS 攻击。

$options array

以名称-值对形式表示的 HTML 标签属性(HTML 选项)。这些将被渲染为结果标签的属性。值将使用 encode() 进行 HTML 编码。如果值为 null,则不会渲染相应的属性。

例如,当使用 ['class' => 'my-class', 'target' => '_blank', 'value' => null] 时,它将导致 HTML 属性像这样渲染:class="my-class" target="_blank"

有关如何渲染属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的 HTML 标签

                public static function tag($name, $content = '', $options = [])
{
    if ($name === null || $name === false) {
        return $content;
    }
    $html = "<$name" . static::renderTagAttributes($options) . '>';
    return isset(static::$voidElements[strtolower($name)]) ? $html : "$html$content</$name>";
}

            
textInput() 公共静态方法

生成文本输入字段。

public static string textInput ( $name, $value null, $options = [] )
$name string

name 属性。

$value 字符串|空值

value 属性。如果为 null,则不会生成 value 属性。

$options array

以名称-值对形式表示的标签选项。这些将呈现为生成的标签的属性。值将使用 encode() 进行 HTML 编码。如果值为 null,则不会呈现相应的属性。有关如何呈现属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的文本输入标签

                public static function textInput($name, $value = null, $options = [])
{
    return static::input('text', $name, $value, $options);
}

            
textarea() 公共静态方法

生成文本区域输入。

public static 字符串 textarea ( $name, $value '', $options = [] )
$name string

输入名称

$value string

输入值。请注意,它将使用 encode() 进行编码。

$options array

标签选项,以名称-值对的形式给出。这些将被渲染为生成的标签的属性。值将使用 encode() 进行 HTML 编码。如果值为 null,则不会渲染相应的属性。有关属性渲染方式的详细信息,请参阅 renderTagAttributes()。以下特殊选项被识别

  • doubleEncode:是否对 $value 中的 HTML 实体进行双重编码。如果为 false,则不会进一步编码 $value 中的 HTML 实体。此选项自 2.0.11 版本起可用。
返回值 string

生成的文本区域标签

                public static function textarea($name, $value = '', $options = [])
{
    $options['name'] = $name;
    $doubleEncode = ArrayHelper::remove($options, 'doubleEncode', true);
    return static::tag('textarea', static::encode($value, $doubleEncode), $options);
}

            
ul() 公共静态方法

生成无序列表。

public static 字符串 ul ( $items, $options = [] )
$items 数组|可遍历对象

用于生成列表的项目。每个项目生成一个列表项。请注意,如果 $options['encode'] 未设置或为 true,则项目将自动进行 HTML 编码。

$options array

单选按钮列表的选项(名称 => 配置)。支持以下选项

  • encode: 布尔值,是否对项目进行 HTML 编码。默认为 true。如果指定了 item 选项,则忽略此选项。
  • separator:字符串,分隔项目的 HTML 代码。默认为简单换行符 ("\n")。此选项自 2.0.7 版本起可用。
  • itemOptions: 数组,li 标签的 HTML 属性。如果指定了 item 选项,则忽略此选项。
  • item: 可调用对象,用于生成每个单独列表项的回调函数。此回调函数的签名必须为

    function ($item, $index)
    

    其中 $index 是对应于 $items$item 的数组键。回调函数应返回整个列表项标签。

有关如何渲染属性的详细信息,请参阅 renderTagAttributes()

返回值 string

生成的无序列表。如果 $items 为空,则将返回一个空列表标签。

                public static function ul($items, $options = [])
{
    $tag = ArrayHelper::remove($options, 'tag', 'ul');
    $encode = ArrayHelper::remove($options, 'encode', true);
    $formatter = ArrayHelper::remove($options, 'item');
    $separator = ArrayHelper::remove($options, 'separator', "\n");
    $itemOptions = ArrayHelper::remove($options, 'itemOptions', []);
    if (empty($items)) {
        return static::tag($tag, '', $options);
    }
    $results = [];
    foreach ($items as $index => $item) {
        if ($formatter !== null) {
            $results[] = call_user_func($formatter, $item, $index);
        } else {
            $results[] = static::tag('li', $encode ? static::encode($item) : $item, $itemOptions);
        }
    }
    return static::tag(
        $tag,
        $separator . implode($separator, $results) . $separator,
        $options
    );
}