3 位关注者

类 yii\web\View

继承关系yii\web\View » yii\base\View » yii\base\Component » yii\base\BaseObject
实现接口yii\base\Configurable, yii\base\DynamicContentAwareInterface
可用版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/web/View.php

View 表示 MVC 模式中的视图对象。

View 提供了一组用于渲染目的的方法(例如 render())。

View 默认情况下在 yii\base\Application 中配置为应用程序组件。您可以通过 Yii::$app->view 访问该实例。

您可以通过在 components 下的应用程序配置中添加一个数组来修改其配置,如下例所示

'view' => [
    'theme' => 'app\themes\MyTheme',
    'renderers' => [
        // you may add Smarty or Twig renderer here
    ]
    // ...
]

有关 View 的更多详细信息和用法信息,请参阅 关于视图的指南文章

公共属性

隐藏继承的属性

属性 类型 描述 定义于
$assetBundles yii\web\AssetBundle[] 已注册的资产包列表。 yii\web\View
$assetManager yii\web\AssetManager 资产管理器。 yii\web\View
$behaviors yii\base\Behavior[] 附加到此组件的行为列表。 yii\base\Component
$blocks array 命名输出块的列表。 yii\base\View
$context yii\base\ViewContextInterface 调用 renderFile() 方法的上下文。 yii\base\View
$css array 已注册的 CSS 代码块。 yii\web\View
$cssFiles array 已注册的 CSS 文件。 yii\web\View
$defaultExtension string 默认视图文件扩展名。 yii\base\View
$dynamicContents yii\base\DynamicContentAwareInterface[] 支持动态内容的类实例。 yii\base\View
$dynamicPlaceholders array 占位符列表。 yii\base\View
$isPageEnded boolean yii\web\View
$js array 已注册的 JS 代码块 yii\web\View
$jsFiles array 已注册的 JS 文件。 yii\web\View
$linkTags array 已注册的链接标签。 yii\web\View
$metaTags array 已注册的元标签。 yii\web\View
$params array 在视图模板之间共享的自定义参数。 yii\base\View
$renderers array|null 可用渲染器的列表,按其对应的支持的文件扩展名索引。 yii\base\View
$theme yii\base\Theme|array|string|null 主题对象或创建主题对象的配置。 yii\base\View
$title string 页面标题 yii\web\View
$viewFile string|boolean 当前正在渲染的视图文件。 yii\base\View

受保护的属性

隐藏继承的属性

属性 类型 描述 定义于

公共方法

隐藏继承的方法

方法 描述 定义于
__call() 调用不是类方法的命名方法。 yii\base\Component
__clone() 此方法在通过克隆现有对象创建对象后调用。 yii\base\Component
__construct() 构造函数。 yii\base\BaseObject
__get() 返回组件属性的值。 yii\base\Component
__isset() 检查属性是否已设置,即定义且不为空。 yii\base\Component
__set() 设置组件属性的值。 yii\base\Component
__unset() 将组件属性设置为 null。 yii\base\Component
addDynamicPlaceholder() 为动态内容添加占位符。 yii\base\View
afterRender() 此方法在 renderFile() 渲染视图文件后立即调用。 yii\base\View
attachBehavior() 将行为附加到此组件。 yii\base\Component
attachBehaviors() 将行为列表附加到组件。 yii\base\Component
beforeRender() 此方法在 renderFile() 渲染视图文件前立即调用。 yii\base\View
beginBlock() 开始记录块。 yii\base\View
beginBody() 标记 HTML body 部分的开始。 yii\web\View
beginCache() 开始片段缓存。 yii\base\View
beginContent() 开始渲染要由指定视图装饰的内容。 yii\base\View
beginPage() 标记页面的开始。 yii\base\View
behaviors() 返回此组件应表现为的行为列表。 yii\base\Component
canGetProperty() 返回一个值,指示是否可以读取属性。 yii\base\Component
canSetProperty() 返回一个值,指示是否可以设置属性。 yii\base\Component
className() 返回此类的完全限定名称。 yii\base\BaseObject
clear() 清除已注册的元标签、链接标签、css/js 脚本和文件。 yii\web\View
detachBehavior() 从组件分离行为。 yii\base\Component
detachBehaviors() 从组件分离所有行为。 yii\base\Component
endBlock() 结束记录块。 yii\base\View
endBody() 标记 HTML body 部分的结束。 yii\web\View
endCache() 结束片段缓存。 yii\base\View
endContent() 结束内容的渲染。 yii\base\View
endPage() 标记 HTML 页面的结束。 yii\web\View
ensureBehaviors() 确保在 behaviors() 中声明的行为已附加到此组件。 yii\base\Component
evaluateDynamicContent() 评估给定的 PHP 语句。 yii\base\View
getAssetManager() 注册此视图对象正在使用的资产管理器。 yii\web\View
getBehavior() 返回命名的行为对象。 yii\base\Component
getBehaviors() 返回附加到此组件的所有行为。 yii\base\Component
getDynamicContents() 返回当前活动动态内容类实例的列表。 yii\base\View
getDynamicPlaceholders() 返回动态内容的占位符列表。此方法用于在内部实现内容缓存功能。 yii\base\View
getViewFile() yii\base\View
hasEventHandlers() 返回一个值,指示是否有任何处理程序附加到命名的事件。 yii\base\Component
hasMethod() 返回一个值,指示方法是否已定义。 yii\base\Component
hasProperty() 返回一个值,指示是否为该组件定义了属性。 yii\base\Component
head() 标记 HTML head 部分的位置。 yii\web\View
init() 初始化视图组件。 yii\base\View
off() 从此组件分离现有的事件处理程序。 yii\base\Component
on() 将事件处理程序附加到事件。 yii\base\Component
popDynamicContent() 从当前活动动态内容类实例列表中删除最后一个支持动态内容的类实例。 yii\base\View
pushDynamicContent() 将支持动态内容的类实例添加到当前活动动态内容类实例列表的末尾。 yii\base\View
registerAssetBundle() 注册命名的资产包。 yii\web\View
registerCsrfMetaTags() 注册 CSRF 元标签。 yii\web\View
registerCss() 注册 CSS 代码块。 yii\web\View
registerCssFile() 注册 CSS 文件。 yii\web\View
registerJs() 注册 JS 代码块。 yii\web\View
registerJsFile() 注册 JS 文件。 yii\web\View
registerJsVar() 注册一个定义变量的 JS 代码块。变量名将用作键,以防止变量名重复。 yii\web\View
registerLinkTag() 注册一个链接标签。 yii\web\View
registerMetaTag() 注册一个元标签。 yii\web\View
render() 渲染一个视图。 yii\base\View
renderAjax() 响应 AJAX 请求渲染一个视图。 yii\web\View
renderDynamic() 渲染由给定 PHP 语句返回的动态内容。 yii\base\View
renderFile() 渲染一个视图文件。 yii\base\View
renderPhpFile() 将视图文件渲染为 PHP 脚本。 yii\base\View
setAssetManager() 设置资源管理器。 yii\web\View
setDynamicPlaceholders() 设置动态内容的一系列占位符。此方法用于内部实现内容缓存功能。 yii\base\View
trigger() 触发一个事件。 yii\base\Component

受保护的方法

隐藏继承的方法

方法 描述 定义于
findViewFile() 根据给定的视图名称查找视图文件。 yii\base\View
getRequestedViewFile() yii\base\View
registerAssetFiles() 注册资源包提供的所有文件,包括依赖包的文件。 yii\web\View
renderBodyBeginHtml() 渲染要插入 body 部分开头的内容。 yii\web\View
renderBodyEndHtml() 渲染要插入 body 部分末尾的内容。 yii\web\View
renderHeadHtml() 渲染要插入 head 部分的内容。 yii\web\View

事件

隐藏继承的事件

事件 类型 描述 定义于
EVENT_AFTER_RENDER yii\base\ViewEvent renderFile() 在渲染视图文件后立即触发的事件。 yii\base\View
EVENT_BEFORE_RENDER yii\base\ViewEvent renderFile() 在渲染视图文件之前立即触发的事件。 yii\base\View
EVENT_BEGIN_BODY yii\web\Event beginBody() 触发的事件。 yii\web\View
EVENT_BEGIN_PAGE yii\base\Event beginPage() 触发的事件。 yii\base\View
EVENT_END_BODY yii\web\Event endBody() 触发的事件。 yii\web\View
EVENT_END_PAGE yii\base\Event endPage() 触发的事件。 yii\base\View

常量

隐藏继承的常量

常量 描述 定义于
PH_BODY_BEGIN '' 在内部用作接收为 body 部分开头注册的内容的占位符。 yii\web\View
PH_BODY_END ' ' 在内部用作接收为 body 部分末尾注册的内容的占位符。 yii\web\View
PH_HEAD ' ' 在内部用作接收为 head 部分注册的内容的占位符。 yii\web\View
POS_BEGIN 2 注册的 JavaScript 代码块或文件的位置。这意味着位置在 body 部分的开头。 yii\web\View
POS_END 3 注册的 JavaScript 代码块或文件的位置。这意味着位置在 body 部分的末尾。 yii\web\View
POS_HEAD 1 注册的 JavaScript 代码块或文件的位置。这意味着位置在 head 部分。 yii\web\View
POS_LOAD 5 注册的 JavaScript 代码块的位置。这意味着 JavaScript 代码块将包含在 jQuery(window).load() 中。 yii\web\View
POS_READY 4 注册的 JavaScript 代码块的位置。这意味着 JavaScript 代码块将包含在 jQuery(document).ready() 中。 yii\web\View

属性详细信息

隐藏继承的属性

$assetBundles 公共属性

已注册的资源包列表。键是包名称,值是已注册的 yii\web\AssetBundle 对象。

另请参见 registerAssetBundle()

$assetManager 公共属性

资源管理器。默认为“assetManager”应用程序组件。

$css 公共属性

已注册的 CSS 代码块。

另请参见 registerCss()

public array $css = []
$cssFiles 公共属性

已注册的 CSS 文件。

另请参见 registerCssFile()

public array $cssFiles = []
$isPageEnded 受保护的属性 (自 2.0.44 版本起可用)
protected boolean $isPageEnded false
$js 公共属性

已注册的 JS 代码块

另请参见 registerJs()

public array $js = []
$jsFiles 公共属性

已注册的 JS 文件。

另请参见 registerJsFile()

public array $jsFiles = []
$linkTags 公共属性

已注册的链接标签。

另请参见 registerLinkTag()

public array $linkTags = []
$metaTags 公共属性

已注册的元标签。

另请参见 registerMetaTag()

public array $metaTags = []
$title 公共属性

页面标题

public string $title null

方法详细信息

隐藏继承的方法

__call() 公共方法

定义于: yii\base\Component::__call()

调用不是类方法的命名方法。

此方法将检查任何附加的行为是否具有指定名称的方法,并在可用时执行它。

不要直接调用此方法,因为它是一个 PHP 魔术方法,当调用未知方法时会隐式调用。

public mixed __call ( $name, $params )
$name string

方法名称

$params array

方法参数

返回值 mixed

方法的返回值

抛出异常 yii\base\UnknownMethodException

调用未知方法时

                public function __call($name, $params)
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $object) {
        if ($object->hasMethod($name)) {
            return call_user_func_array([$object, $name], $params);
        }
    }
    throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}

            
__clone() 公共方法

定义于: yii\base\Component::__clone()

此方法在通过克隆现有对象创建对象后调用。

它会移除所有行为,因为它们附加到旧对象上。

public void __clone ( )

                public function __clone()
{
    $this->_events = [];
    $this->_eventWildcards = [];
    $this->_behaviors = null;
}

            
__construct() 公共方法

定义于: yii\base\BaseObject::__construct()

构造函数。

默认实现执行两件事

  • 使用给定的配置 $config 初始化对象。
  • 调用 init()

如果此方法在子类中被重写,建议

  • 构造函数的最后一个参数是一个配置数组,就像这里的 $config 一样。
  • 在构造函数的末尾调用父类的实现。
public void __construct ( $config = [] )
$config array

将用于初始化对象属性的键值对

                public function __construct($config = [])
{
    if (!empty($config)) {
        Yii::configure($this, $config);
    }
    $this->init();
}

            
__get() 公共方法

定义于: yii\base\Component::__get()

返回组件属性的值。

此方法将按以下顺序检查并相应地执行

  • 由 getter 定义的属性:返回 getter 的结果
  • 行为的属性:返回行为属性的值

不要直接调用此方法,因为它是一个 PHP 魔术方法,在执行 $value = $component->property; 时会隐式调用。

另请参阅 __set()

public mixed __get ( $name )
$name string

属性名称

返回值 mixed

属性值或行为属性的值

抛出异常 yii\base\UnknownPropertyException

如果属性未定义

抛出异常 yii\base\InvalidCallException

如果属性是只写属性。

                public function __get($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        // read property, e.g. getName()
        return $this->$getter();
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name;
        }
    }
    if (method_exists($this, 'set' . $name)) {
        throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name);
}

            
__isset() 公共方法

定义于: yii\base\Component::__isset()

检查属性是否已设置,即定义且不为空。

此方法将按以下顺序检查并相应地执行

  • 由 setter 定义的属性:返回属性是否已设置
  • 行为的属性:返回属性是否已设置
  • 对于不存在的属性返回 false

不要直接调用此方法,因为它是一个 PHP 魔术方法,在执行 isset($component->property) 时会隐式调用。

另请参阅 https://php.ac.cn/manual/en/function.isset.php

public boolean __isset ( $name )
$name string

属性名称或事件名称

返回值 boolean

指定的属性是否已设置

                public function __isset($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter() !== null;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name !== null;
        }
    }
    return false;
}

            
__set() 公共方法

定义于: yii\base\Component::__set()

设置组件属性的值。

此方法将按以下顺序检查并相应地执行

  • 由 setter 定义的属性:设置属性值
  • “on xyz”格式的事件:将处理程序附加到“xyz”事件
  • “as xyz”格式的行为:附加名为“xyz”的行为
  • 行为的属性:设置行为属性的值

不要直接调用此方法,因为它是一个 PHP 魔术方法,在执行 $component->property = $value; 时会隐式调用。

另请参阅 __get()

public void __set ( $name, $value )
$name string

属性名称或事件名称

$value mixed

属性值

抛出异常 yii\base\UnknownPropertyException

如果属性未定义

抛出异常 yii\base\InvalidCallException

如果属性是只读属性。

                public function __set($name, $value)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        // set property
        $this->$setter($value);
        return;
    } elseif (strncmp($name, 'on ', 3) === 0) {
        // on event: attach event handler
        $this->on(trim(substr($name, 3)), $value);
        return;
    } elseif (strncmp($name, 'as ', 3) === 0) {
        // as behavior: attach behavior
        $name = trim(substr($name, 3));
        $this->attachBehavior($name, $value instanceof Behavior ? $value : Yii::createObject($value));
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = $value;
            return;
        }
    }
    if (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
}

            
__unset() 公共方法

定义于: yii\base\Component::__unset()

将组件属性设置为 null。

此方法将按以下顺序检查并相应地执行

  • 由 setter 定义的属性:将属性值设置为 null
  • 行为的属性:将属性值设置为 null

不要直接调用此方法,因为它是一个 PHP 魔术方法,在执行 unset($component->property) 时会隐式调用。

另请参阅 https://php.ac.cn/manual/en/function.unset.php

public void __unset ( $name )
$name string

属性名称

抛出异常 yii\base\InvalidCallException

如果属性是只读属性。

                public function __unset($name)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter(null);
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = null;
            return;
        }
    }
    throw new InvalidCallException('Unsetting an unknown or read-only property: ' . get_class($this) . '::' . $name);
}

            
addDynamicPlaceholder() 公共方法

定义于: yii\base\View::addDynamicPlaceholder()

为动态内容添加占位符。

此方法用于内部实现内容缓存功能。

public void addDynamicPlaceholder ( $placeholder, $statements )
$placeholder
$statements string

生成动态内容的 PHP 语句。

                public function addDynamicPlaceholder($placeholder, $statements)
{
    foreach ($this->cacheStack as $cache) {
        if ($cache instanceof DynamicContentAwareInterface) {
            $cache->addDynamicPlaceholder($placeholder, $statements);
        } else {
            // TODO: Remove in 2.1
            $cache->dynamicPlaceholders[$placeholder] = $statements;
        }
    }
    $this->dynamicPlaceholders[$placeholder] = $statements;
}

            
afterRender() 公共方法

定义于: yii\base\View::afterRender()

此方法在 renderFile() 渲染视图文件后立即调用。

默认实现将触发 EVENT_AFTER_RENDER 事件。如果重写此方法,请确保首先调用父类的实现。

public void afterRender ( $viewFile, $params, &$output )
$viewFile string

正在渲染的视图文件。

$params array

传递给 render() 方法的参数数组。

$output string

视图文件的渲染结果。对此参数的更新将被传递回并由 renderFile() 返回。

                public function afterRender($viewFile, $params, &$output)
{
    if ($this->hasEventHandlers(self::EVENT_AFTER_RENDER)) {
        $event = new ViewEvent([
            'viewFile' => $viewFile,
            'params' => $params,
        ]);
        $event->output =& $output;
        $this->trigger(self::EVENT_AFTER_RENDER, $event);
    }
}

            
attachBehavior() 公共方法

定义于: yii\base\Component::attachBehavior()

将行为附加到此组件。

此方法将根据给定的配置创建行为对象。之后,行为对象将通过调用 yii\base\Behavior::attach() 方法附加到此组件。

另请参阅 detachBehavior()

public yii\base\Behavior attachBehavior ( $name, $behavior )
$name string

行为的名称。

$behavior 字符串|数组|yii\base\Behavior

行为配置。可以是以下之一:

返回值 yii\base\Behavior

行为对象

                public function attachBehavior($name, $behavior)
{
    $this->ensureBehaviors();
    return $this->attachBehaviorInternal($name, $behavior);
}

            
attachBehaviors() 公共方法

定义于: yii\base\Component::attachBehaviors()

将行为列表附加到组件。

每个行为都由其名称索引,并且应该是一个yii\base\Behavior对象,一个指定行为类的字符串,或一个用于创建行为的配置数组。

另请参阅 attachBehavior()

public void attachBehaviors ( $behaviors )
$behaviors array

要附加到组件的行为列表

                public function attachBehaviors($behaviors)
{
    $this->ensureBehaviors();
    foreach ($behaviors as $name => $behavior) {
        $this->attachBehaviorInternal($name, $behavior);
    }
}

            
beforeRender() 公共方法

定义于: yii\base\View::beforeRender()

此方法在 renderFile() 渲染视图文件前立即调用。

默认实现将触发EVENT_BEFORE_RENDER事件。如果您覆盖此方法,请确保首先调用父实现。

public boolean beforeRender ( $viewFile, $params )
$viewFile string

要渲染的视图文件。

$params array

传递给 render() 方法的参数数组。

返回值 boolean

是否继续渲染视图文件。

                public function beforeRender($viewFile, $params)
{
    $event = new ViewEvent([
        'viewFile' => $viewFile,
        'params' => $params,
    ]);
    $this->trigger(self::EVENT_BEFORE_RENDER, $event);
    return $event->isValid;
}

            
beginBlock() 公共方法

定义于: yii\base\View::beginBlock()

开始记录块。

此方法是开始yii\widgets\Block的快捷方式。

public yii\widgets\Block beginBlock ( $id, $renderInPlace false )
$id string

块 ID。

$renderInPlace boolean

是否在原处渲染块内容。默认为 false,这意味着捕获的块不会显示。

返回值 yii\widgets\Block

Block 小部件实例

                public function beginBlock($id, $renderInPlace = false)
{
    return Block::begin([
        'id' => $id,
        'renderInPlace' => $renderInPlace,
        'view' => $this,
    ]);
}

            
beginBody() 公共方法

标记 HTML body 部分的开始。

public void beginBody ( )

                public function beginBody()
{
    echo self::PH_BODY_BEGIN;
    $this->trigger(self::EVENT_BEGIN_BODY);
}

            
beginCache() 公共方法

定义于: yii\base\View::beginCache()

开始片段缓存。

如果缓存可用,此方法将显示缓存内容。否则,它将开始缓存,并期望一个endCache()调用来结束缓存并将内容保存到缓存中。片段缓存的典型用法如下所示:

if ($this->beginCache($id)) {
    // ...generate content here
    $this->endCache();
}
public boolean beginCache ( $id, $properties = [] )
$id string

一个唯一 ID,用于标识要缓存的片段。

$properties array

yii\widgets\FragmentCache的初始属性值

返回值 boolean

是否应该生成缓存内容。如果缓存版本可用,则为 false。

                public function beginCache($id, $properties = [])
{
    $properties['id'] = $id;
    $properties['view'] = $this;
    /* @var $cache FragmentCache */
    $cache = FragmentCache::begin($properties);
    if ($cache->getCachedContent() !== false) {
        $this->endCache();
        return false;
    }
    return true;
}

            
beginContent() 公共方法

定义于: yii\base\View::beginContent()

开始渲染要由指定视图装饰的内容。

此方法可用于实现嵌套布局。例如,布局可以嵌入另一个布局文件中,该文件指定为“@app/views/layouts/base.php”,如下所示:

<?php $this->beginContent('@app/views/layouts/base.php'); ?>
//...layout content here...
<?php $this->endContent(); ?>

另请参阅 yii\widgets\ContentDecorator

public yii\widgets\ContentDecorator beginContent ( $viewFile, $params = [] )
$viewFile string

将用于装饰此小部件包含的内容的视图文件。这可以指定为视图文件路径或路径别名

$params array

要提取并在装饰视图中使用的变量(名称 => 值)。

返回值 yii\widgets\ContentDecorator

ContentDecorator 小部件实例

                public function beginContent($viewFile, $params = [])
{
    return ContentDecorator::begin([
        'viewFile' => $viewFile,
        'params' => $params,
        'view' => $this,
    ]);
}

            
beginPage() 公共方法

定义于: yii\base\View::beginPage()

标记页面的开始。

public void beginPage ( )

                public function beginPage()
{
    ob_start();
    ob_implicit_flush(false);
    $this->trigger(self::EVENT_BEGIN_PAGE);
}

            
behaviors() 公共方法

定义于: yii\base\Component::behaviors()

返回此组件应表现为的行为列表。

子类可以覆盖此方法以指定它们希望表现出的行为。

此方法的返回值应为行为对象或配置的数组,这些对象或配置由行为名称索引。行为配置可以是指定行为类的字符串,也可以是以下结构的数组:

'behaviorName' => [
    'class' => 'BehaviorClass',
    'property1' => 'value1',
    'property2' => 'value2',
]

请注意,行为类必须扩展自yii\base\Behavior。可以使用名称或匿名方式附加行为。当使用名称作为数组键时,使用此名称,可以使用getBehavior()检索行为,或使用detachBehavior()分离行为。无法检索或分离匿名行为。

此方法中声明的行为将自动附加到组件(按需)。

public array behaviors ( )
返回值 array

行为配置。

                public function behaviors()
{
    return [];
}

            
canGetProperty() 公共方法

定义于: yii\base\Component::canGetProperty()

返回一个值,指示是否可以读取属性。

如果满足以下条件,则可以读取属性:

  • 类具有与指定名称关联的 getter 方法(在这种情况下,属性名称不区分大小写);
  • 类具有与指定名称相同的成员变量(当 $checkVars 为 true 时);
  • 附加的行为具有给定名称的可读属性(当 $checkBehaviors 为 true 时)。

另请参阅 canSetProperty()

public boolean canGetProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

属性名称

$checkVars boolean

是否将成员变量视为属性

$checkBehaviors boolean

是否将行为的属性视为此组件的属性

返回值 boolean

属性是否可读

                public function canGetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canGetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

            
canSetProperty() 公共方法

定义于: yii\base\Component::canSetProperty()

返回一个值,指示是否可以设置属性。

如果满足以下条件,则可以写入属性:

  • 类具有与指定名称关联的 setter 方法(在这种情况下,属性名称不区分大小写);
  • 类具有与指定名称相同的成员变量(当 $checkVars 为 true 时);
  • 附加的行为具有给定名称的可写属性(当 $checkBehaviors 为 true 时)。

另请参阅 canGetProperty()

public boolean canSetProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

属性名称

$checkVars boolean

是否将成员变量视为属性

$checkBehaviors boolean

是否将行为的属性视为此组件的属性

返回值 boolean

属性是否可写

                public function canSetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canSetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

            
className() 公共静态方法
自 2.0.14 版本起已弃用。在 PHP >= 5.5 中,请使用 ::class 代替。

定义于: yii\base\BaseObject::className()

返回此类的完全限定名称。

public static string className ( )
返回值 string

此类的完全限定名称。

                public static function className()
{
    return get_called_class();
}

            
clear() 公共方法

清除已注册的元标签、链接标签、css/js 脚本和文件。

public void clear ( )

                public function clear()
{
    $this->metaTags = [];
    $this->linkTags = [];
    $this->css = [];
    $this->cssFiles = [];
    $this->js = [];
    $this->jsFiles = [];
    $this->assetBundles = [];
}

            
detachBehavior() 公共方法

定义于: yii\base\Component::detachBehavior()

从组件分离行为。

将调用行为的 yii\base\Behavior::detach() 方法。

public yii\base\Behavior|null detachBehavior ( $name )
$name string

行为的名称。

返回值 yii\base\Behavior|null

分离的行为。如果行为不存在,则为 null。

                public function detachBehavior($name)
{
    $this->ensureBehaviors();
    if (isset($this->_behaviors[$name])) {
        $behavior = $this->_behaviors[$name];
        unset($this->_behaviors[$name]);
        $behavior->detach();
        return $behavior;
    }
    return null;
}

            
detachBehaviors() 公共方法

定义于: yii\base\Component::detachBehaviors()

从组件分离所有行为。

public void detachBehaviors ( )

                public function detachBehaviors()
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $name => $behavior) {
        $this->detachBehavior($name);
    }
}

            
endBlock() 公共方法

定义于: yii\base\View::endBlock()

结束记录块。

public void endBlock ( )

                public function endBlock()
{
    Block::end();
}

            
endBody() 公共方法

标记 HTML body 部分的结束。

public void endBody ( )

                public function endBody()
{
    $this->trigger(self::EVENT_END_BODY);
    echo self::PH_BODY_END;
    foreach (array_keys($this->assetBundles) as $bundle) {
        $this->registerAssetFiles($bundle);
    }
}

            
endCache() 公共方法

定义于: yii\base\View::endCache()

结束片段缓存。

public void endCache ( )

                public function endCache()
{
    FragmentCache::end();
}

            
endContent() 公共方法

定义于: yii\base\View::endContent()

结束内容的渲染。

public void endContent ( )

                public function endContent()
{
    ContentDecorator::end();
}

            
endPage() 公共方法

标记 HTML 页面的结束。

public void endPage ( $ajaxMode false )
$ajaxMode boolean

视图是否以 AJAX 模式渲染。如果为 true,则在 POS_READYPOS_LOAD 位置注册的 JS 脚本将像普通脚本一样在视图末尾渲染。

                public function endPage($ajaxMode = false)
{
    $this->trigger(self::EVENT_END_PAGE);
    $this->isPageEnded = true;
    $content = ob_get_clean();
    echo strtr($content, [
        self::PH_HEAD => $this->renderHeadHtml(),
        self::PH_BODY_BEGIN => $this->renderBodyBeginHtml(),
        self::PH_BODY_END => $this->renderBodyEndHtml($ajaxMode),
    ]);
    $this->clear();
}

            
ensureBehaviors() 公共方法

定义于: yii\base\Component::ensureBehaviors()

确保在 behaviors() 中声明的行为已附加到此组件。

public void ensureBehaviors ( )

                public function ensureBehaviors()
{
    if ($this->_behaviors === null) {
        $this->_behaviors = [];
        foreach ($this->behaviors() as $name => $behavior) {
            $this->attachBehaviorInternal($name, $behavior);
        }
    }
}

            
evaluateDynamicContent() 公共方法

定义于: yii\base\View::evaluateDynamicContent()

评估给定的 PHP 语句。

此方法主要用于内部实现动态内容功能。

public mixed evaluateDynamicContent ( $statements )
$statements string

要评估的 PHP 语句。

返回值 mixed

PHP 语句的返回值。

                public function evaluateDynamicContent($statements)
{
    return eval($statements);
}

            
findViewFile() 受保护方法

定义于: yii\base\View::findViewFile()

根据给定的视图名称查找视图文件。

protected string findViewFile ( $view, $context null )
$view string

视图名称或视图文件的 路径别名。请参考 render() 如何指定此参数。

$context object|null

要分配给视图的上下文,稍后可以通过 $context 在视图中访问。如果上下文实现了 yii\base\ViewContextInterface,它也可以用于定位与相对视图名称相对应的视图文件。

返回值 string

视图文件路径。请注意,该文件可能不存在。

抛出异常 yii\base\InvalidCallException

如果在没有活动上下文来确定对应视图文件的情况下给出了相对视图名称。

                protected function findViewFile($view, $context = null)
{
    if (strncmp($view, '@', 1) === 0) {
        // e.g. "@app/views/main"
        $file = Yii::getAlias($view);
    } elseif (strncmp($view, '//', 2) === 0) {
        // e.g. "//layouts/main"
        $file = Yii::$app->getViewPath() . DIRECTORY_SEPARATOR . ltrim($view, '/');
    } elseif (strncmp($view, '/', 1) === 0) {
        // e.g. "/site/index"
        if (Yii::$app->controller !== null) {
            $file = Yii::$app->controller->module->getViewPath() . DIRECTORY_SEPARATOR . ltrim($view, '/');
        } else {
            throw new InvalidCallException("Unable to locate view file for view '$view': no active controller.");
        }
    } elseif ($context instanceof ViewContextInterface) {
        $file = $context->getViewPath() . DIRECTORY_SEPARATOR . $view;
    } elseif (($currentViewFile = $this->getRequestedViewFile()) !== false) {
        $file = dirname($currentViewFile) . DIRECTORY_SEPARATOR . $view;
    } else {
        throw new InvalidCallException("Unable to resolve view file for view '$view': no active view context.");
    }
    if (pathinfo($file, PATHINFO_EXTENSION) !== '') {
        return $file;
    }
    $path = $file . '.' . $this->defaultExtension;
    if ($this->defaultExtension !== 'php' && !is_file($path)) {
        $path = $file . '.php';
    }
    return $path;
}

            
getAssetManager() 公共方法

注册此视图对象正在使用的资产管理器。

public yii\web\AssetManager getAssetManager ( )
返回值 yii\web\AssetManager

资源管理器。默认为“assetManager”应用程序组件。

                public function getAssetManager()
{
    return $this->_assetManager ?: Yii::$app->getAssetManager();
}

            
getBehavior() 公共方法

定义于: yii\base\Component::getBehavior()

返回命名的行为对象。

public yii\base\Behavior|null getBehavior ( $name )
$name string

行为名称

返回值 yii\base\Behavior|null

行为对象,如果行为不存在则为 null

                public function getBehavior($name)
{
    $this->ensureBehaviors();
    return isset($this->_behaviors[$name]) ? $this->_behaviors[$name] : null;
}

            
getBehaviors() 公共方法

定义于: yii\base\Component::getBehaviors()

返回附加到此组件的所有行为。

public yii\base\Behavior[] getBehaviors ( )
返回值 yii\base\Behavior[]

附加到此组件的行为列表。

                public function getBehaviors()
{
    $this->ensureBehaviors();
    return $this->_behaviors;
}

            
getDynamicContents() 公共方法 (自版本 2.0.14 起可用)

定义于: yii\base\View::getDynamicContents()

返回当前活动动态内容类实例的列表。

public yii\base\DynamicContentAwareInterface[] getDynamicContents ( )
返回值 yii\base\DynamicContentAwareInterface[]

支持动态内容的类实例。

                public function getDynamicContents()
{
    return $this->cacheStack;
}

            
getDynamicPlaceholders() 公共方法

定义于: yii\base\View::getDynamicPlaceholders()

返回动态内容的占位符列表。此方法用于在内部实现内容缓存功能。

public array getDynamicPlaceholders ( )
返回值 array

占位符列表。

                public function getDynamicPlaceholders()
{
    return $this->dynamicPlaceholders;
}

            
getRequestedViewFile() 受保护方法 (自版本 2.0.16 起可用)
protected string|boolean getRequestedViewFile ( )
返回值 string|boolean

当前正在渲染的请求视图。如果未渲染任何视图文件,则为 false。

                protected function getRequestedViewFile()
{
    return empty($this->_viewFiles) ? false : end($this->_viewFiles)['requested'];
}

            
getViewFile() 公共方法
public string|boolean getViewFile ( )
返回值 string|boolean

当前正在渲染的视图文件。如果未渲染任何视图文件,则为 false。

                public function getViewFile()
{
    return empty($this->_viewFiles) ? false : end($this->_viewFiles)['resolved'];
}

            
hasEventHandlers() 公共方法

定义于: yii\base\Component::hasEventHandlers()

返回一个值,指示是否有任何处理程序附加到命名的事件。

public boolean hasEventHandlers ( $name )
$name string

事件名称。

返回值 boolean

是否存在任何附加到事件的处理程序。

                public function hasEventHandlers($name)
{
    $this->ensureBehaviors();
    if (!empty($this->_events[$name])) {
        return true;
    }
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (!empty($handlers) && StringHelper::matchWildcard($wildcard, $name)) {
            return true;
        }
    }
    return Event::hasHandlers($this, $name);
}

            
hasMethod() 公共方法

定义于: yii\base\Component::hasMethod()

返回一个值,指示方法是否已定义。

如果以下情况,则定义了一个方法:

  • 类具有指定名称的方法。
  • 附加的行为具有给定名称的方法(当 $checkBehaviors 为 true 时)。
public boolean hasMethod ( $name, $checkBehaviors true )
$name string

属性名称

$checkBehaviors boolean

是否将行为的方法视为此组件的方法。

返回值 boolean

该方法是否已定义。

                public function hasMethod($name, $checkBehaviors = true)
{
    if (method_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->hasMethod($name)) {
                return true;
            }
        }
    }
    return false;
}

            
hasProperty() 公共方法

定义于: yii\base\Component::hasProperty()

返回一个值,指示是否为该组件定义了属性。

如果以下情况,则定义了一个属性:

  • 类具有与指定名称关联的 getter 或 setter 方法(在这种情况下,属性名称不区分大小写)。
  • 类具有与指定名称相同的成员变量(当 $checkVars 为 true 时);
  • 附加的行为具有给定名称的属性(当 $checkBehaviors 为 true 时)。

另请参阅

public boolean hasProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

属性名称

$checkVars boolean

是否将成员变量视为属性

$checkBehaviors boolean

是否将行为的属性视为此组件的属性

返回值 boolean

该属性是否已定义。

                public function hasProperty($name, $checkVars = true, $checkBehaviors = true)
{
    return $this->canGetProperty($name, $checkVars, $checkBehaviors) || $this->canSetProperty($name, false, $checkBehaviors);
}

            
head() 公共方法

标记 HTML head 部分的位置。

public void head ( )

                public function head()
{
    echo self::PH_HEAD;
}

            
init() 公共方法

定义于: yii\base\View::init()

初始化视图组件。

public void init ( )

                public function init()
{
    parent::init();
    if (is_array($this->theme)) {
        if (!isset($this->theme['class'])) {
            $this->theme['class'] = 'yii\base\Theme';
        }
        $this->theme = Yii::createObject($this->theme);
    } elseif (is_string($this->theme)) {
        $this->theme = Yii::createObject($this->theme);
    }
}

            
off() 公共方法

定义于: yii\base\Component::off()

从此组件分离现有的事件处理程序。

此方法与 on() 相反。

注意:如果为事件名称传递了通配符模式,则只会删除使用此通配符注册的处理程序,而使用与该通配符匹配的普通名称注册的处理程序将保留。

另请参阅 on()

public boolean off ( $name, $handler null )
$name string

事件名称。

$handler callable|null

要移除的事件处理程序。如果为 null,则将移除附加到命名事件的所有处理程序。

返回值 boolean

如果找到并分离了处理程序,则

                public function off($name, $handler = null)
{
    $this->ensureBehaviors();
    if (empty($this->_events[$name]) && empty($this->_eventWildcards[$name])) {
        return false;
    }
    if ($handler === null) {
        unset($this->_events[$name], $this->_eventWildcards[$name]);
        return true;
    }
    $removed = false;
    // plain event names
    if (isset($this->_events[$name])) {
        foreach ($this->_events[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_events[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_events[$name] = array_values($this->_events[$name]);
            return true;
        }
    }
    // wildcard event names
    if (isset($this->_eventWildcards[$name])) {
        foreach ($this->_eventWildcards[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_eventWildcards[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_eventWildcards[$name] = array_values($this->_eventWildcards[$name]);
            // remove empty wildcards to save future redundant regex checks:
            if (empty($this->_eventWildcards[$name])) {
                unset($this->_eventWildcards[$name]);
            }
        }
    }
    return $removed;
}

            
on() 公共方法

定义于: yii\base\Component::on()

将事件处理程序附加到事件。

事件处理程序必须是有效的 PHP 回调。以下是一些示例

function ($event) { ... }         // anonymous function
[$object, 'handleClick']          // $object->handleClick()
['Page', 'handleClick']           // Page::handleClick()
'handleClick'                     // global function handleClick()

事件处理程序必须使用以下签名定义:

function ($event)

其中 $event 是一个 yii\base\Event 对象,其中包含与事件关联的参数。

从 2.0.14 开始,您可以将事件名称指定为通配符模式。

$component->on('event.group.*', function ($event) {
    Yii::trace($event->name . ' is triggered.');
});

另请参阅 off()

public void on ( $name, $handler, $data null, $append true )
$name string

事件名称。

$handler callable

事件处理程序。

$data mixed

触发事件时传递给事件处理程序的数据。当调用事件处理程序时,可以通过 yii\base\Event::$data 访问此数据。

$append boolean

是否将新的事件处理程序附加到现有处理程序列表的末尾。如果为 false,则新的处理程序将插入到现有处理程序列表的开头。

                public function on($name, $handler, $data = null, $append = true)
{
    $this->ensureBehaviors();
    if (strpos($name, '*') !== false) {
        if ($append || empty($this->_eventWildcards[$name])) {
            $this->_eventWildcards[$name][] = [$handler, $data];
        } else {
            array_unshift($this->_eventWildcards[$name], [$handler, $data]);
        }
        return;
    }
    if ($append || empty($this->_events[$name])) {
        $this->_events[$name][] = [$handler, $data];
    } else {
        array_unshift($this->_events[$name], [$handler, $data]);
    }
}

            
popDynamicContent() 公共方法 (自版本 2.0.14 起可用)

定义于: yii\base\View::popDynamicContent()

从当前活动动态内容类实例列表中删除最后一个支持动态内容的类实例。

public void popDynamicContent ( )

                public function popDynamicContent()
{
    array_pop($this->cacheStack);
}

            
pushDynamicContent() 公共方法 (自版本 2.0.14 起可用)

定义于: yii\base\View::pushDynamicContent()

将支持动态内容的类实例添加到当前活动动态内容类实例列表的末尾。

public void pushDynamicContent ( yii\base\DynamicContentAwareInterface $instance )
$instance yii\base\DynamicContentAwareInterface

支持动态内容的类实例。

                public function pushDynamicContent(DynamicContentAwareInterface $instance)
{
    $this->cacheStack[] = $instance;
}

            
registerAssetBundle() 公共方法

注册命名的资产包。

所有依赖的资源包都将被注册。

public yii\web\AssetBundle registerAssetBundle ( $name, $position null )
$name string

资源包的类名(不带开头的反斜杠)

$position 整数|null

如果设置,这将强制 javascript 文件的最小位置。这将根据依赖的 javascript 文件的位置进行调整,或者如果无法满足要求则失败。如果为 null,则不会更改资源包的位置设置。有关 javascript 位置的更多详细信息,请参阅 registerJsFile()

返回值 yii\web\AssetBundle

已注册的资源包实例

抛出异常 yii\base\InvalidConfigException

如果资源包不存在或检测到循环依赖

                public function registerAssetBundle($name, $position = null)
{
    if (!isset($this->assetBundles[$name])) {
        $am = $this->getAssetManager();
        $bundle = $am->getBundle($name);
        $this->assetBundles[$name] = false;
        // register dependencies
        $pos = isset($bundle->jsOptions['position']) ? $bundle->jsOptions['position'] : null;
        foreach ($bundle->depends as $dep) {
            $this->registerAssetBundle($dep, $pos);
        }
        $this->assetBundles[$name] = $bundle;
    } elseif ($this->assetBundles[$name] === false) {
        throw new InvalidConfigException("A circular dependency is detected for bundle '$name'.");
    } else {
        $bundle = $this->assetBundles[$name];
    }
    if ($position !== null) {
        $pos = isset($bundle->jsOptions['position']) ? $bundle->jsOptions['position'] : null;
        if ($pos === null) {
            $bundle->jsOptions['position'] = $pos = $position;
        } elseif ($pos > $position) {
            throw new InvalidConfigException("An asset bundle that depends on '$name' has a higher javascript file position configured than '$name'.");
        }
        // update position for all dependencies
        foreach ($bundle->depends as $dep) {
            $this->registerAssetBundle($dep, $pos);
        }
    }
    return $bundle;
}

            
registerAssetFiles() 受保护的方法

注册资源包提供的所有文件,包括依赖包的文件。

在注册文件后,从 $assetBundles 中删除一个包。

protected void registerAssetFiles ( $name )
$name string

要注册的包的名称

                protected function registerAssetFiles($name)
{
    if (!isset($this->assetBundles[$name])) {
        return;
    }
    $bundle = $this->assetBundles[$name];
    if ($bundle) {
        foreach ($bundle->depends as $dep) {
            $this->registerAssetFiles($dep);
        }
        $bundle->registerAssetFiles($this);
    }
    unset($this->assetBundles[$name]);
}

            
registerCsrfMetaTags() 公共方法 (自版本 2.0.13 起可用)

注册 CSRF 元标签。

它们是动态渲染的,以便为每个请求检索新的 CSRF 令牌。

$view->registerCsrfMetaTags();

以上代码将导致<meta name="csrf-param" content="[yii\web\Request::$csrfParam]"><meta name="csrf-token" content="tTNpWKpdy-bx8ZmIq9R72...K1y8IP3XGkzZA=="> 添加到页面中。

注意:ActiveForm 的隐藏 CSRF 输入将通过从yii.js 调用window.yii.refreshCsrfToken() 自动刷新。

public void registerCsrfMetaTags ( )

                public function registerCsrfMetaTags()
{
    $this->metaTags['csrf_meta_tags'] = $this->renderDynamic('return yii\helpers\Html::csrfMetaTags();');
}

            
registerCss() 公共方法

注册 CSS 代码块。

public void registerCss ( $css, $options = [], $key null )
$css string

要注册的 CSS 代码块的内容

$options array

<style> 标签的 HTML 属性。

$key 字符串|null

标识 CSS 代码块的键。如果为 null,它将使用 $css 作为键。如果两个 CSS 代码块使用相同的键注册,则后者将覆盖前者。

                public function registerCss($css, $options = [], $key = null)
{
    $key = $key ?: md5($css);
    $this->css[$key] = Html::style($css, $options);
}

            
registerCssFile() 公共方法

注册 CSS 文件。

此方法应用于 CSS 文件的简单注册。如果您想使用 yii\web\AssetManager 的功能(如将时间戳附加到 URL 和文件发布选项),请改用 yii\web\AssetBundleregisterAssetBundle()

public void registerCssFile ( $url, $options = [], $key null )
$url string

要注册的 CSS 文件。

$options array

链接标签的 HTML 属性。有关支持的选项,请参阅 yii\helpers\Html::cssFile()。以下选项将被特殊处理,不会被视为 HTML 属性

  • depends:数组,指定此 CSS 文件依赖的资源包的名称。
  • appendTimestamp:布尔值,是否将时间戳附加到 URL。
$key 字符串|null

标识 CSS 脚本文件的键。如果为 null,它将使用 $url 作为键。如果两个 CSS 文件使用相同的键注册,则后者将覆盖前者。

抛出异常 yii\base\InvalidConfigException

                public function registerCssFile($url, $options = [], $key = null)
{
    $this->registerFile('css', $url, $options, $key);
}

            
registerJs() 公共方法

注册 JS 代码块。

public void registerJs ( $js, $position self::POS_READY, $key null )
$js string

要注册的 JS 代码块

$position 整数

应在页面中插入 JS 脚本标记的位置。可能的值为

  • POS_HEAD:在 head 部分
  • POS_BEGIN:在 body 部分的开头
  • POS_END:在 body 部分的末尾
  • POS_LOAD:包含在 jQuery(window).load() 中。请注意,通过使用此位置,该方法将自动注册 jQuery js 文件。
  • POS_READY:包含在 jQuery(document).ready() 中。这是默认值。请注意,通过使用此位置,该方法将自动注册 jQuery js 文件。
$key 字符串|null

标识 JS 代码块的键。如果为 null,它将使用 $js 作为键。如果两个 JS 代码块使用相同的键注册,则后者将覆盖前者。

                public function registerJs($js, $position = self::POS_READY, $key = null)
{
    $key = $key ?: md5($js);
    $this->js[$position][$key] = $js;
    if ($position === self::POS_READY || $position === self::POS_LOAD) {
        JqueryAsset::register($this);
    }
}

            
registerJsFile() 公共方法

注册 JS 文件。

此方法应用于 JS 文件的简单注册。如果您想使用 yii\web\AssetManager 的功能(如将时间戳附加到 URL 和文件发布选项),请改用 yii\web\AssetBundleregisterAssetBundle()

public void registerJsFile ( $url, $options = [], $key null )
$url string

要注册的 JS 文件。

$options array

脚本标记的 HTML 属性。以下选项将被特殊处理,不会被视为 HTML 属性

  • depends:数组,指定此 JS 文件依赖的资源包的名称。
  • position:指定应在页面中插入 JS 脚本标记的位置。可能的值为
    • POS_HEAD:在 head 部分
    • POS_BEGIN:在 body 部分的开头
    • POS_END:在 body 部分的末尾。这是默认值。
  • appendTimestamp:布尔值,是否将时间戳附加到 URL。

有关其他支持的选项,请参阅 yii\helpers\Html::jsFile()

$key 字符串|null

用于标识 JS 脚本文件的键。如果为 null,则使用 $url 作为键。如果在相同位置注册了两个具有相同键的 JS 文件,则后者将覆盖前者。请注意,position 选项优先,因此使用相同键但 position 选项不同的文件不会相互覆盖。

抛出异常 yii\base\InvalidConfigException

                public function registerJsFile($url, $options = [], $key = null)
{
    $this->registerFile('js', $url, $options, $key);
}

            
registerJsVar() 公共方法 (自版本 2.0.14 起可用)

注册一个定义变量的 JS 代码块。变量名将用作键,以防止变量名重复。

public void registerJsVar ( $name, $value, $position self::POS_HEAD )
$name string

变量的名称

$value 数组|字符串

变量的值

$position 整数

在页面中插入 JavaScript 变量的位置。可能的值为:

  • POS_HEAD: 在头部区域。这是默认值。
  • POS_BEGIN: 在 body 部分的开头。
  • POS_END: 在 body 部分的结尾。
  • POS_LOAD:包含在 jQuery(window).load() 中。请注意,通过使用此位置,该方法将自动注册 jQuery js 文件。
  • POS_READY: 包含在 jQuery(document).ready() 中。请注意,使用此位置,该方法将自动注册 jQuery js 文件。

                public function registerJsVar($name, $value, $position = self::POS_HEAD)
{
    $js = sprintf('var %s = %s;', $name, \yii\helpers\Json::htmlEncode($value));
    $this->registerJs($js, $position, $name);
}

            
registerLinkTag() 公共方法

注册一个链接标签。

例如,可以像下面这样添加自定义 favicon 的链接标签:

$view->registerLinkTag(['rel' => 'icon', 'type' => 'image/png', 'href' => '/myicon.png']);

这将生成以下 HTML:<link rel="icon" type="image/png" href="/myicon.png">

注意:要为 CSS 样式表注册链接标签,请改用 registerCssFile(),该方法为此类链接标签提供了更多选项。

public void registerLinkTag ( $options, $key null )
$options array

link 标签的 HTML 属性。

$key 字符串|null

用于标识链接标签的键。如果使用相同的键注册了两个链接标签,则后者将覆盖前者。如果此值为 null,则新的链接标签将附加到现有的标签。

                public function registerLinkTag($options, $key = null)
{
    if ($key === null) {
        $this->linkTags[] = Html::tag('link', '', $options);
    } else {
        $this->linkTags[$key] = Html::tag('link', '', $options);
    }
}

            
registerMetaTag() 公共方法

注册一个元标签。

例如,可以像下面这样添加描述元标签:

$view->registerMetaTag([
    'name' => 'description',
    'content' => 'This website is about funny raccoons.'
]);

将生成以下元标签 <meta name="description" content="This website is about funny raccoons.">

public void registerMetaTag ( $options, $key null )
$options array

meta 标签的 HTML 属性。

$key 字符串|null

用于标识元标签的键。如果使用相同的键注册了两个元标签,则后者将覆盖前者。如果此值为 null,则新的元标签将附加到现有的标签。

                public function registerMetaTag($options, $key = null)
{
    if ($key === null) {
        $this->metaTags[] = Html::tag('meta', '', $options);
    } else {
        $this->metaTags[$key] = Html::tag('meta', '', $options);
    }
}

            
render() 公共方法

定义于: yii\base\View::render()

渲染一个视图。

要渲染的视图可以用以下格式之一指定:

  • 路径别名 (例如 "@app/views/site/index");
  • 应用程序内的绝对路径 (例如 "//site/index"):视图名称以双斜杠开头。实际的视图文件将在应用程序的 视图路径 下查找。
  • 当前模块内的绝对路径 (例如 "/site/index"):视图名称以单个斜杠开头。实际的视图文件将在 当前模块视图路径 下查找。
  • 相对视图 (例如 "index"):视图名称不以 @/ 开头。相应的视图文件将在视图 $context视图路径 下查找。如果未提供 $context,则将在包含当前正在渲染的视图的目录下查找(即,当在另一个视图中渲染视图时发生这种情况)。

另请参阅 renderFile()

public 字符串 render ( $view, $params = [], $context null )
$view string

视图名称。

$params array

将被提取并在视图文件中可用的参数(名称-值对)。

$context object|null

要分配给视图的上下文,稍后可以通过 $context 在视图中访问。如果上下文实现了 yii\base\ViewContextInterface,它也可以用于定位与相对视图名称相对应的视图文件。

返回值 string

渲染结果

抛出异常 yii\base\ViewNotFoundException

如果视图文件不存在。

抛出异常 yii\base\InvalidCallException

如果无法解析视图。

                public function render($view, $params = [], $context = null)
{
    $viewFile = $this->findViewFile($view, $context);
    return $this->renderFile($viewFile, $params, $context);
}

            
renderAjax() 公共方法

响应 AJAX 请求渲染一个视图。

此方法类似于 render(),不同之处在于它将用 beginPage()head()beginBody()endBody()endPage() 的调用包围要渲染的视图。通过这样做,该方法能够使用与视图一起注册的 JS/CSS 脚本和文件注入渲染结果。

另请参阅 render()

public 字符串 renderAjax ( $view, $params = [], $context null )
$view string

视图名称。请参阅 render() 以了解如何指定此参数。

$params array

将被提取并在视图文件中可用的参数(名称-值对)。

$context object|null

视图应使用哪个上下文进行渲染。如果为 null,将使用现有的 $context

返回值 string

渲染结果

                public function renderAjax($view, $params = [], $context = null)
{
    $viewFile = $this->findViewFile($view, $context);
    ob_start();
    ob_implicit_flush(false);
    $this->beginPage();
    $this->head();
    $this->beginBody();
    echo $this->renderFile($viewFile, $params, $context);
    $this->endBody();
    $this->endPage(true);
    return ob_get_clean();
}

            
renderBodyBeginHtml() 受保护的方法

渲染要插入 body 部分开头的内容。

内容使用注册的 JS 代码块和文件进行渲染。

protected 字符串 renderBodyBeginHtml ( )
返回值 string

渲染后的内容

                protected function renderBodyBeginHtml()
{
    $lines = [];
    if (!empty($this->jsFiles[self::POS_BEGIN])) {
        $lines[] = implode("\n", $this->jsFiles[self::POS_BEGIN]);
    }
    if (!empty($this->js[self::POS_BEGIN])) {
        $lines[] = Html::script(implode("\n", $this->js[self::POS_BEGIN]));
    }
    return empty($lines) ? '' : implode("\n", $lines);
}

            
renderBodyEndHtml() 受保护的方法

渲染要插入 body 部分末尾的内容。

内容使用注册的 JS 代码块和文件进行渲染。

protected 字符串 renderBodyEndHtml ( $ajaxMode )
$ajaxMode boolean

视图是否以 AJAX 模式渲染。如果为 true,则在 POS_READYPOS_LOAD 位置注册的 JS 脚本将像普通脚本一样在视图末尾渲染。

返回值 string

渲染后的内容

                protected function renderBodyEndHtml($ajaxMode)
{
    $lines = [];
    if (!empty($this->jsFiles[self::POS_END])) {
        $lines[] = implode("\n", $this->jsFiles[self::POS_END]);
    }
    if ($ajaxMode) {
        $scripts = [];
        if (!empty($this->js[self::POS_END])) {
            $scripts[] = implode("\n", $this->js[self::POS_END]);
        }
        if (!empty($this->js[self::POS_READY])) {
            $scripts[] = implode("\n", $this->js[self::POS_READY]);
        }
        if (!empty($this->js[self::POS_LOAD])) {
            $scripts[] = implode("\n", $this->js[self::POS_LOAD]);
        }
        if (!empty($scripts)) {
            $lines[] = Html::script(implode("\n", $scripts));
        }
    } else {
        if (!empty($this->js[self::POS_END])) {
            $lines[] = Html::script(implode("\n", $this->js[self::POS_END]));
        }
        if (!empty($this->js[self::POS_READY])) {
            $js = "jQuery(function ($) {\n" . implode("\n", $this->js[self::POS_READY]) . "\n});";
            $lines[] = Html::script($js);
        }
        if (!empty($this->js[self::POS_LOAD])) {
            $js = "jQuery(window).on('load', function () {\n" . implode("\n", $this->js[self::POS_LOAD]) . "\n});";
            $lines[] = Html::script($js);
        }
    }
    return empty($lines) ? '' : implode("\n", $lines);
}

            
renderDynamic() 公共方法

定义于: yii\base\View::renderDynamic()

渲染由给定 PHP 语句返回的动态内容。

此方法主要与内容缓存(片段缓存和页面缓存)一起使用,当内容的某些部分(称为动态内容)不应被缓存时。动态内容必须由某些 PHP 语句返回。

另请参阅 https://github.com/yiisoft/yii2/issues/17673

public 字符串 renderDynamic ( $statements )
$statements string

生成动态内容的 PHP 语句。

返回值 string

动态内容的占位符,或者如果没有当前活动的内容缓存,则为动态内容本身。

请注意,大多数间接修改布局的方法(例如 registerJS() 或 registerJSFile())不适用于动态渲染。

                public function renderDynamic($statements)
{
    if (!empty($this->cacheStack)) {
        $n = count($this->dynamicPlaceholders);
        $placeholder = "<![CDATA[YII-DYNAMIC-$n]]>";
        $this->addDynamicPlaceholder($placeholder, $statements);
        return $placeholder;
    }
    return $this->evaluateDynamicContent($statements);
}

            
renderFile() 公共方法

定义于: yii\base\View::renderFile()

渲染一个视图文件。

如果启用了 $theme(不为 null),它将尝试渲染视图文件的主题版本,只要该版本可用。

该方法将调用 yii\helpers\FileHelper::localize() 来本地化视图文件。

如果启用了 渲染器(非 null),则该方法将使用它来渲染视图文件。否则,它将简单地包含视图文件作为普通 PHP 文件,捕获其输出并将其作为字符串返回。

public string renderFile ( $viewFile, $params = [], $context null )
$viewFile string

视图文件。这可以是绝对文件路径或其别名。

$params array

将被提取并在视图文件中可用的参数(名称-值对)。

$context object|null

视图应使用哪个上下文进行渲染。如果为 null,将使用现有的 $context

返回值 string

渲染结果

抛出异常 yii\base\ViewNotFoundException

如果视图文件不存在

                public function renderFile($viewFile, $params = [], $context = null)
{
    $viewFile = $requestedFile = Yii::getAlias($viewFile);
    if ($this->theme !== null) {
        $viewFile = $this->theme->applyTo($viewFile);
    }
    if (is_file($viewFile)) {
        $viewFile = FileHelper::localize($viewFile);
    } else {
        throw new ViewNotFoundException("The view file does not exist: $viewFile");
    }
    $oldContext = $this->context;
    if ($context !== null) {
        $this->context = $context;
    }
    $output = '';
    $this->_viewFiles[] = [
        'resolved' => $viewFile,
        'requested' => $requestedFile
    ];
    if ($this->beforeRender($viewFile, $params)) {
        Yii::debug("Rendering view file: $viewFile", __METHOD__);
        $ext = pathinfo($viewFile, PATHINFO_EXTENSION);
        if (isset($this->renderers[$ext])) {
            if (is_array($this->renderers[$ext]) || is_string($this->renderers[$ext])) {
                $this->renderers[$ext] = Yii::createObject($this->renderers[$ext]);
            }
            /* @var $renderer ViewRenderer */
            $renderer = $this->renderers[$ext];
            $output = $renderer->render($this, $viewFile, $params);
        } else {
            $output = $this->renderPhpFile($viewFile, $params);
        }
        $this->afterRender($viewFile, $params, $output);
    }
    array_pop($this->_viewFiles);
    $this->context = $oldContext;
    return $output;
}

            
renderHeadHtml() 受保护方法

渲染要插入 head 部分的内容。

内容使用注册的元标记、链接标记、CSS/JS 代码块和文件进行渲染。

protected string renderHeadHtml ( )
返回值 string

渲染后的内容

                protected function renderHeadHtml()
{
    $lines = [];
    if (!empty($this->metaTags)) {
        $lines[] = implode("\n", $this->metaTags);
    }
    if (!empty($this->linkTags)) {
        $lines[] = implode("\n", $this->linkTags);
    }
    if (!empty($this->cssFiles)) {
        $lines[] = implode("\n", $this->cssFiles);
    }
    if (!empty($this->css)) {
        $lines[] = implode("\n", $this->css);
    }
    if (!empty($this->jsFiles[self::POS_HEAD])) {
        $lines[] = implode("\n", $this->jsFiles[self::POS_HEAD]);
    }
    if (!empty($this->js[self::POS_HEAD])) {
        $lines[] = Html::script(implode("\n", $this->js[self::POS_HEAD]));
    }
    return empty($lines) ? '' : implode("\n", $lines);
}

            
renderPhpFile() 公共方法

定义于: yii\base\View::renderPhpFile()

将视图文件渲染为 PHP 脚本。

此方法将视图文件视为 PHP 脚本并包含该文件。它提取给定的参数并在视图文件中提供它们。该方法捕获包含的视图文件的输出并将其作为字符串返回。

此方法主要应由视图渲染器或 renderFile() 调用。

public string renderPhpFile ( $_file_, $_params_ = [] )
$_file_ string

视图文件。

$_params_ array

将被提取并在视图文件中可用的参数(名称-值对)。

返回值 string

渲染结果

抛出异常 Throwable

                public function renderPhpFile($_file_, $_params_ = [])
{
    $_obInitialLevel_ = ob_get_level();
    ob_start();
    ob_implicit_flush(false);
    extract($_params_, EXTR_OVERWRITE);
    try {
        require $_file_;
        return ob_get_clean();
    } catch (\Exception $e) {
        while (ob_get_level() > $_obInitialLevel_) {
            if (!@ob_end_clean()) {
                ob_clean();
            }
        }
        throw $e;
    } catch (\Throwable $e) {
        while (ob_get_level() > $_obInitialLevel_) {
            if (!@ob_end_clean()) {
                ob_clean();
            }
        }
        throw $e;
    }
}

            
setAssetManager() 公共方法

设置资源管理器。

public void setAssetManager ( $value )
$value yii\web\AssetManager

资产管理器

                public function setAssetManager($value)
{
    $this->_assetManager = $value;
}

            
setDynamicPlaceholders() 公共方法

定义于: yii\base\View::setDynamicPlaceholders()

设置动态内容的一系列占位符。此方法用于内部实现内容缓存功能。

public void setDynamicPlaceholders ( $placeholders )
$placeholders array

占位符列表。

                public function setDynamicPlaceholders($placeholders)
{
    $this->dynamicPlaceholders = $placeholders;
}

            
trigger() 公共方法

定义于: yii\base\Component::trigger()

触发一个事件。

此方法表示事件的发生。它调用事件的所有附加处理程序,包括类级处理程序。

public void trigger ( $name, yii\base\Event $event null )
$name string

事件名称。

$event yii\base\Event|null

事件实例。如果未设置,将创建默认的 yii\base\Event 对象。

                public function trigger($name, Event $event = null)
{
    $this->ensureBehaviors();
    $eventHandlers = [];
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (StringHelper::matchWildcard($wildcard, $name)) {
            $eventHandlers[] = $handlers;
        }
    }
    if (!empty($this->_events[$name])) {
        $eventHandlers[] = $this->_events[$name];
    }
    if (!empty($eventHandlers)) {
        $eventHandlers = call_user_func_array('array_merge', $eventHandlers);
        if ($event === null) {
            $event = new Event();
        }
        if ($event->sender === null) {
            $event->sender = $this;
        }
        $event->handled = false;
        $event->name = $name;
        foreach ($eventHandlers as $handler) {
            $event->data = $handler[1];
            call_user_func($handler[0], $event);
            // stop further handling if the event is handled
            if ($event->handled) {
                return;
            }
        }
    }
    // invoke class-level attached handlers
    Event::trigger($this, $name, $event);
}

            

事件详情

隐藏继承的属性

EVENT_BEGIN_BODY yii\web\Event 类型的事件

beginBody() 触发的事件。

EVENT_END_BODY yii\web\Event 类型的事件

endBody() 触发的事件。