1 位关注者

类 yii\helpers\Html

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

Html 提供了一组用于生成常用 HTML 标签的静态方法。

此类中的几乎所有方法都允许为其生成的 html 标签设置额外的 html 属性。例如,您可以使用 $options 参数为 html 元素指定 classstyleid。有关更多详细信息,请参阅 tag() 方法的文档。

有关 Html 的更多详细信息和使用信息,请参阅 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

方法详情

隐藏继承的方法

a() 公有静态方法

定义于: yii\helpers\BaseHtml::a()

生成超链接标签。

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

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

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

$url 数组|字符串|null

超链接标签的 URL。此参数将由 yii\helpers\Url::to() 处理,并将用于标签的“href”属性。如果此参数为 null,则不会生成“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 起可用)

定义于: yii\helpers\BaseHtml::activeBooleanInput()

生成布尔输入此方法主要由 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() 公共静态方法

定义于: yii\helpers\BaseHtml::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() 公共静态方法

定义于: yii\helpers\BaseHtml::activeCheckboxList()

生成复选框列表。

复选框列表允许多选,如 listBox()。因此,提交的值是一个数组。复选框列表的选择取自模型属性的值。

public static 字符串 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() 公共静态方法

定义于: yii\helpers\BaseHtml::activeDropDownList()

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

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

public static 字符串 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() 公共静态方法

定义于: yii\helpers\BaseHtml::activeFileInput()

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

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

public static 字符串 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() 公共静态方法

定义于: yii\helpers\BaseHtml::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\helpers\BaseHtml::activeHint()

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

提示文本是与属性关联的提示,通过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() 公共静态方法

定义于: yii\helpers\BaseHtml::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\helpers\BaseHtml::activeLabel()

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

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

public static string 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() 公共静态方法

定义于: yii\helpers\BaseHtml::activeListBox()

生成列表框。

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

public static string 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: string,当没有选项被选中时将提交的值。当设置此属性时,将生成一个隐藏字段,以便如果在多选模式下没有选择任何选项,我们仍然可以获取发布的 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() 受保护的静态方法

定义于: yii\helpers\BaseHtml::activeListInput()

生成输入字段列表。

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

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

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

$model yii\base\Model

模型对象

$attribute string

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

$items array

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

$options array

输入列表的选项(name => config)。支持的特殊选项取决于$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() 公共静态方法

定义于: yii\helpers\BaseHtml::activePasswordInput()

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

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

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

模型对象

$attribute string

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

$options array

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

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

生成的输入标签

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

            
activeRadio() 公共静态方法

定义于: yii\helpers\BaseHtml::activeRadio()

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

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

public static string 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() 公共静态方法

定义于: yii\helpers\BaseHtml::activeRadioList()

生成单选按钮列表。

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

public static 字符串 activeRadioList ( $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,使用 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() 公共静态方法

定义于: yii\helpers\BaseHtml::activeTextInput()

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

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

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

模型对象

$attribute string

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

$options array

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

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

生成的输入标签

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

            
activeTextarea() 公共静态方法

定义于: yii\helpers\BaseHtml::activeTextarea()

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

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

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

模型对象

$attribute string

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

$options array

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

  • maxlength: integer|boolean,当maxlength设置为 true 且模型属性由字符串验证器验证时,maxlength选项将采用yii\validators\StringValidator::$max和[[\yii\validators\StringValidator::length]的最大值。此功能自版本 2.0.6 起可用,并自版本 2.0.42 起改进为考虑了length
  • placeholder: string|boolean,当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() 公共静态方法

定义于: yii\helpers\BaseHtml::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() 公共静态方法

定义于: yii\helpers\BaseHtml::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() 公共静态方法

定义于: yii\helpers\BaseHtml::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() 公共静态方法

定义于: yii\helpers\BaseHtml::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 版本起可用)

定义于: yii\helpers\BaseHtml::booleanInput()

生成布尔输入。

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

输入类型。可以是 radiocheckbox

$name string

name 属性。

$checked boolean

复选框是否应被选中。

$options array

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

  • uncheck: string,与复选框的未选中状态关联的值。当存在此属性时,将生成一个隐藏输入,以便如果复选框未选中且已提交,则此属性的值仍将通过隐藏输入提交到服务器。
  • label: string,复选框旁边显示的标签。它不会被 HTML 编码。因此,您可以传入 HTML 代码(例如图像标签)。如果此标签来自最终用户,则应 encode() 它以防止 XSS 攻击。当指定此选项时,复选框将用标签标签括起来。
  • labelOptions: array,标签标签的 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() 公共静态方法

定义于: yii\helpers\BaseHtml::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() 公共静态方法

定义于: yii\helpers\BaseHtml::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() 公共静态方法

定义于: yii\helpers\BaseHtml::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() 公共静态方法

定义于: yii\helpers\BaseHtml::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() 公共静态方法

定义于: yii\helpers\BaseHtml::csrfMetaTags()

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

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

public static 字符串 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() 公共静态方法

定义于: yii\helpers\BaseHtml::cssFile()

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

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

public static 字符串 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() 公共静态方法

定义于: yii\helpers\BaseHtml::cssStyleFromArray()

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

例如,

print_r(Html::cssStyleFromArray(['width' => '100px', 'height' => '200px']));
// will display: 'width: 100px; height: 200px;'
public static 字符串 cssStyleFromArray ( 数组 $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() 公共静态方法

定义于: yii\helpers\BaseHtml::cssStyleToArray()

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

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

例如,

print_r(Html::cssStyleToArray('width: 100px; height: 200px;'));
// will display: ['width' => '100px', 'height' => '200px']
public static 数组 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() 公共静态方法

定义于: yii\helpers\BaseHtml::decode()

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

这是 encode() 的反操作。

另请参见

public static 字符串 decode ( $content )
$content string

要解码的内容

返回值 string

解码后的内容

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

            
encode() 公共静态方法

定义于: yii\helpers\BaseHtml::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() 公共静态方法

定义于: yii\helpers\BaseHtml::endForm()

生成表单结束标签。

另请参阅 beginForm()

public static string endForm ( )
返回值 string

生成的标签

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

            
endTag() 公共静态方法

定义于: yii\helpers\BaseHtml::endTag()

生成结束标签。

另请参见

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

标签名称。如果 $name 为 nullfalse,则将渲染相应的内容,但不带任何标签。

返回值 string

生成的结束标签

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

            
error() 公共静态方法

定义于: yii\helpers\BaseHtml::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() 公共静态方法

定义于: yii\helpers\BaseHtml::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起可用)

定义于: yii\helpers\BaseHtml::escapeJsRegularExpression()

转义正则表达式以在 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() 公共静态方法

定义于: yii\helpers\BaseHtml::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() 公共静态方法

定义于: yii\helpers\BaseHtml::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() 公共静态方法

定义于: yii\helpers\BaseHtml::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() 公共静态方法

定义于: yii\helpers\BaseHtml::getInputId()

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

public static 字符串 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 版本起可用)

定义于: yii\helpers\BaseHtml::getInputIdByName()

将输入名称转换为 ID。

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

public static 字符串 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() 公共静态方法

定义于: yii\helpers\BaseHtml::getInputName()

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

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

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

public static 字符串 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() 公共静态方法

定义于: yii\helpers\BaseHtml::hiddenInput()

生成隐藏输入字段。

public static 字符串 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() 公共静态方法

定义于: yii\helpers\BaseHtml::img()

生成图像标签。

public static 字符串 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() 公共静态方法

定义于: yii\helpers\BaseHtml::input()

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

public static 字符串 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() 公共静态方法

定义于: yii\helpers\BaseHtml::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 浏览器。

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

返回值 string

生成的脚本标签

                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() 公共静态方法

定义于: yii\helpers\BaseHtml::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() 公共静态方法

定义于: yii\helpers\BaseHtml::listBox()

生成列表框。

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

输入名称

$selection 字符串|布尔值|数组|

选定的值。字符串表示单选,数组表示多选。

$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: string,当没有选项被选中时将提交的值。当设置此属性时,将生成一个隐藏字段,以便如果在多选模式下没有选择任何选项,我们仍然可以获取发布的 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() 公共静态方法

定义于: yii\helpers\BaseHtml::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() 公共静态方法

定义于: yii\helpers\BaseHtml::ol()

生成有序列表。

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

生成列表的项目。每个项目生成一个列表项。请注意,如果$options['encode']未设置或为真,则项目将自动进行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() 公共静态方法

定义于: yii\helpers\BaseHtml::passwordInput()

生成密码输入字段。

public static string 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() 公共静态方法

定义于: yii\helpers\BaseHtml::radio()

生成单选按钮输入。

public static string 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() 公共静态方法

定义于: yii\helpers\BaseHtml::radioList()

生成单选按钮列表。

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

public static string 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: array,使用 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() 公共静态方法

定义于: yii\helpers\BaseHtml::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() 公共静态方法

定义于: yii\helpers\BaseHtml::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() 公共静态方法

定义于: yii\helpers\BaseHtml::renderSelectOptions()

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

public static string renderSelectOptions ( $selection, $items, &$tagOptions = [] )
$selection string|array|boolean|null

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

$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() 公共静态方法

定义于: yii\helpers\BaseHtml::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() 公共静态方法

定义于: yii\helpers\BaseHtml::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() 公共静态方法

定义于: yii\helpers\BaseHtml::resetInput()

生成重置输入按钮。

public static string resetInput ( $label '重置', $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() 公共静态方法

定义于: yii\helpers\BaseHtml::script()

生成脚本标签。

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

脚本内容

$options array

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

返回值 string

生成的脚本标签

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

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

定义于: yii\helpers\BaseHtml::setActivePlaceholder()

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

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() 公共静态方法

定义于: yii\helpers\BaseHtml::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() 公共静态方法

定义于: yii\helpers\BaseHtml::submitButton()

生成提交按钮标签。

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

public static string submitButton ( $content '提交', $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() 公共静态方法

定义于: yii\helpers\BaseHtml::submitInput()

生成提交输入按钮。

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

public static string submitInput ( $label '提交', $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() 公共静态方法

定义于: yii\helpers\BaseHtml::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() 公共静态方法

定义于: yii\helpers\BaseHtml::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() 公共静态方法

定义于: yii\helpers\BaseHtml::textarea()

生成文本区域输入。

public static string 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() 公共静态方法

定义于: yii\helpers\BaseHtml::ul()

生成无序列表。

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

生成列表的项目。每个项目生成一个列表项。请注意,如果$options['encode']未设置或为真,则项目将自动进行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
    );
}