0 追蹤者

類別 yii\widgets\ContentDecorator

繼承yii\widgets\ContentDecorator » yii\base\Widget » yii\base\Component » yii\base\BaseObject
實作yii\base\Configurable, yii\base\ViewContextInterface
自版本起可用2.0
原始碼 https://github.com/yiisoft/yii2/blob/master/framework/widgets/ContentDecorator.php

ContentDecorator 記錄 begin()end() 呼叫之間的所有輸出,將其作為 $content 傳遞到指定的視圖檔案,然後輸出渲染結果。

<?php ContentDecorator::begin([
    'viewFile' => '@app/views/layouts/base.php',
    'params' => [],
    'view' => $this,
]) ?>

some content here

<?php ContentDecorator::end() ?>

yii\base\View 元件中有 yii\base\View::beginContent()yii\base\View::endContent() 包裝方法,使語法更友善。在視圖中,它們可以如下使用

<?php $this->beginContent('@app/views/layouts/base.php') ?>

some content here

<?php $this->endContent() ?>

公開屬性

隱藏繼承的屬性

屬性 類型 描述 定義於
$autoIdPrefix string 自動產生的 Widget ID 的前綴。 yii\base\Widget
$behaviors yii\base\Behavior[] 附加到此元件的行為列表。 yii\base\Component
$id string|null Widget 的 ID。 yii\base\Widget
$params array 要提取並在裝飾性視圖中提供的參數 (名稱 => 值)。 yii\widgets\ContentDecorator
$view yii\web\View 可用於渲染視圖或視圖檔案的視圖物件。 yii\base\Widget
$viewFile string 將用於裝飾此小工具所包含內容的視圖檔案。 yii\widgets\ContentDecorator
$viewPath string 包含此小工具視圖檔案的目錄。 yii\base\Widget

公共方法

隱藏繼承的方法

方法 描述 定義於
__call() 呼叫未作為類別方法的具名方法。 yii\base\Component
__clone() 在透過複製現有物件建立物件後,會呼叫此方法。 yii\base\Component
__construct() 建構子。 yii\base\BaseObject
__get() 傳回組件屬性的值。 yii\base\Component
__isset() 檢查屬性是否已設定,即已定義且非 null。 yii\base\Component
__set() 設定組件屬性的值。 yii\base\Component
__unset() 將組件屬性設定為 null。 yii\base\Component
afterRun() 此方法會在小工具執行完成後立即調用。 yii\base\Widget
attachBehavior() 將行為附加到此組件。 yii\base\Component
attachBehaviors() 將行為列表附加到組件。 yii\base\Component
beforeRun() 此方法會在小工具執行之前立即調用。 yii\base\Widget
begin() 開始小工具。 yii\base\Widget
behaviors() 傳回此組件應表現為的行為列表。 yii\base\Component
canGetProperty() 傳回指示是否可以讀取屬性的值。 yii\base\Component
canSetProperty() 傳回指示是否可以設定屬性的值。 yii\base\Component
className() 傳回此類別的完整限定名稱。 yii\base\BaseObject
detachBehavior() 從組件分離行為。 yii\base\Component
detachBehaviors() 從組件分離所有行為。 yii\base\Component
end() 結束小工具。 yii\base\Widget
ensureBehaviors() 確保在 behaviors() 中宣告的行為已附加到此組件。 yii\base\Component
getBehavior() 傳回具名的行為物件。 yii\base\Component
getBehaviors() 傳回附加到此組件的所有行為。 yii\base\Component
getId() 傳回小工具的 ID。 yii\base\Widget
getView() 傳回可用於渲染視圖或視圖檔案的視圖物件。 yii\base\Widget
getViewPath() 傳回包含此小工具視圖檔案的目錄。 yii\base\Widget
hasEventHandlers() 傳回指示是否有名稱事件附加任何處理常式的值。 yii\base\Component
hasMethod() 傳回指示是否已定義方法的值。 yii\base\Component
hasProperty() 傳回指示是否已為此組件定義屬性的值。 yii\base\Component
init() 開始記錄剪輯。 yii\widgets\ContentDecorator
off() 從此組件分離現有的事件處理常式。 yii\base\Component
on() 將事件處理常式附加到事件。 yii\base\Component
render() 渲染視圖。 yii\base\Widget
renderFile() 渲染視圖檔案。 yii\base\Widget
run() 結束記錄剪輯。 yii\widgets\ContentDecorator
setId() 設定小工具的 ID。 yii\base\Widget
setView() 設定此小工具要使用的視圖物件。 yii\base\Widget
trigger() 觸發事件。 yii\base\Component
widget() 建立小工具實例並執行它。 yii\base\Widget

事件

隱藏繼承的事件

事件 類型 描述 定義於
EVENT_AFTER_RUN yii\base\WidgetEvent 在執行小工具後立即引發的事件。(自 2.0.11 版本起可用) yii\base\Widget
EVENT_BEFORE_RUN yii\base\WidgetEvent 在執行小工具之前立即引發的事件。(自 2.0.11 版本起可用) yii\base\Widget
EVENT_INIT yii\base\Event 透過 init() 初始化小工具時觸發的事件。(自 2.0.11 版本起可用) yii\base\Widget

屬性詳細資訊

隱藏繼承的屬性

$params 公共屬性

要提取並在裝飾性視圖中提供的參數 (名稱 => 值)。

public array $params = []
$viewFile 公共屬性

將用於裝飾此小工具所包含內容的視圖檔案。這可以指定為視圖檔案路徑或 路徑別名

public string $viewFile null

方法詳細資訊

隱藏繼承的方法

__call() 公共方法

定義於: yii\base\Component::__call()

呼叫未作為類別方法的具名方法。

此方法將檢查是否有任何附加的行為具有具名方法,並在可用時執行它。

請勿直接呼叫此方法,因為它是 PHP 魔術方法,當調用未知方法時,將會隱式呼叫它。

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

方法名稱

$params array

$params

方法參數 return

mixed

方法傳回值 throws

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 function __clone()
{
    $this->_events = [];
    $this->_eventWildcards = [];
    $this->_behaviors = null;
}

            
public void __clone ( )

__construct() 公共方法

建構子。

定義於: yii\base\BaseObject::__construct()

  • 預設實作會執行兩件事
  • 使用給定的組態 $config 初始化物件。

呼叫 init()

  • 如果子類別中覆寫了此方法,建議
  • 建構子的最後一個參數是組態陣列,例如此處的 $config
在建構子的結尾呼叫父類別實作。
public void __construct ( $config = [] ) array

$config

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

            
將用於初始化物件屬性的名稱-值對

定義於: yii\base\Component::__get()

傳回組件屬性的值。

此方法將依以下順序檢查並採取相應措施

  • getter 定義的屬性:傳回 getter 結果
  • 行為的屬性:傳回行為屬性值

請勿直接呼叫此方法,因為它是 PHP 魔術方法,當執行 $value = $component->property; 時,將會隱式呼叫它。

另請參閱 __set()

public mixed __get ( $name )
$name string

$name

方法參數 return

屬性名稱

方法傳回值 return

混合

方法傳回值 屬性值或行為屬性的值

throws

                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);
}

            
yii\base\UnknownPropertyException

如果未定義屬性

檢查屬性是否已設定,即已定義且非 null。

此方法將依以下順序檢查並採取相應措施

setter 定義的屬性:傳回屬性是否已設定

行為的屬性:傳回屬性是否已設定

return false 代表不存在的屬性
$name string

請勿直接呼叫此方法,因為它是 PHP 魔術方法,當執行 isset($component->property) 時,將會隱式呼叫它。

方法參數 另請參閱 https://php.dev.org.tw/manual/en/function.isset.php

public boolean __isset ( $name )

                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;
}

            
$name

屬性名稱或事件名稱

設定組件屬性的值。

此方法將依以下順序檢查並採取相應措施

setter 定義的屬性:設定屬性值

格式為 "on xyz" 的事件:將處理常式附加到事件 "xyz"

格式為 "as xyz" 的行為:附加具名為 "xyz" 的行為
$name string

請勿直接呼叫此方法,因為它是 PHP 魔術方法,當執行 isset($component->property) 時,將會隱式呼叫它。

行為的屬性:設定行為屬性值 return

請勿直接呼叫此方法,因為它是 PHP 魔術方法,當執行 $component->property = $value; 時,將會隱式呼叫它。

方法傳回值 return

混合

方法傳回值 屬性值或行為屬性的值

另請參閱 __get()

                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);
}

            
public void __set ( $name, $value )

$name

將組件屬性設定為 null。

此方法將依以下順序檢查並採取相應措施

  • 屬性名稱
  • $value

屬性值

throws

yii\base\InvalidCallException
$name string

$name

方法傳回值 屬性值或行為屬性的值

如果屬性為唯讀。

                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);
}

            

setter 定義的屬性:將屬性值設定為 null

此方法會在小工具執行完成後立即調用。

行為的屬性:將屬性值設定為 null

請勿直接呼叫此方法,因為它是 PHP 魔術方法,當執行 unset($component->property) 時,將會隱式呼叫它。

public function afterRun($result)
{
    $result = parent::afterRun($result);
    // your custom code here
    return $result;
}
另請參閱 https://php.dev.org.tw/manual/en/function.unset.php
public void __unset ( $name ) return

$name

方法參數 return

屬性名稱

                public function afterRun($result)
{
    $event = new WidgetEvent();
    $event->result = $result;
    $this->trigger(self::EVENT_AFTER_RUN, $event);
    return $event->result;
}

            
throws

yii\base\InvalidCallException

將行為附加到此組件。

如果屬性為唯讀。

定義於: yii\base\Widget::afterRun()

此方法將觸發 EVENT_AFTER_RUN 事件。此方法的傳回值將用作小工具傳回值。
$name string

如果您覆寫此方法,您的程式碼應如下所示

public mixed afterRun ( $result ) $result

小工具傳回結果。

  • return
  • 混合
  • 已處理的小工具結果。
方法參數 yii\base\Behavior

定義於: yii\base\Component::attachBehavior()

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

            
此方法將根據給定的組態建立行為物件。之後,將透過呼叫 yii\base\Behavior::attach() 方法將行為物件附加到此組件。

另請參閱 detachBehavior()

將行為列表附加到組件。

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

$name

行為的名稱。
$behaviors array

$behavior

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

            

行為組態。這可以是以下其中之一

此方法會在小工具執行之前立即調用。

a yii\base\Behavior 物件

指定行為類別的字串

public function beforeRun()
{
    if (!parent::beforeRun()) {
        return false;
    }

    // your custom code here

    return true; // or false to not run the widget
}
將傳遞給 Yii::createObject() 以建立行為物件的物件組態陣列。
方法參數 另請參閱 https://php.dev.org.tw/manual/en/function.isset.php

return

                public function beforeRun()
{
    $event = new WidgetEvent();
    $this->trigger(self::EVENT_BEFORE_RUN, $event);
    return $event->isValid;
}

            

行為物件

開始小工具。

定義於: yii\base\Component::attachBehaviors()

每個行為都按其名稱索引,並且應該是 yii\base\Behavior 物件、指定行為類別的字串,或是用於建立行為的組態陣列。

另請參閱 attachBehavior()
public void __construct ( $config = [] ) array

$config

方法參數 yii\base\Widget

public void attachBehaviors ( $behaviors )

                public static function begin($config = [])
{
    $config['class'] = get_called_class();
    /* @var $widget Widget */
    $widget = Yii::createObject($config);
    self::$stack[] = $widget;
    return $widget;
}

            
$behaviors

要附加到組件的行為列表

傳回此組件應表現為的行為列表。

定義於: yii\base\Widget::beforeRun()

此方法將觸發 EVENT_BEFORE_RUN 事件。此方法的傳回值將決定小工具是否應繼續執行。

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

當覆寫此方法時,請確保您像以下方式呼叫父類別實作

public boolean beforeRun ( )

return
方法參數 array

boolean

                public function behaviors()
{
    return [];
}

            
小工具是否應繼續執行。

定義於: yii\base\Widget::begin()

傳回指示是否可以讀取屬性的值。

此方法建立呼叫類別的實例。它將組態應用於已建立的實例。稍後應呼叫相符的 end() 呼叫。由於某些小工具可能會使用輸出緩衝,因此應在同一個視圖中進行 end() 呼叫,以避免中斷輸出緩衝的巢狀結構。

  • 另請參閱 end()
  • public static static begin ( $config = [] )
  • return

static

新建立的小工具實例
$name string

$name

定義於: yii\base\Component::behaviors() 另請參閱 https://php.dev.org.tw/manual/en/function.isset.php

子類別可以覆寫此方法,以指定它們要表現為的行為。

此方法的傳回值應該是以行為名稱索引的行為物件或組態陣列。行為組態可以是指定行為類別的字串,或是具有以下結構的陣列 另請參閱 https://php.dev.org.tw/manual/en/function.isset.php

請注意,行為類別必須從 yii\base\Behavior 擴展。行為可以使用名稱或匿名方式附加。當名稱用作陣列鍵時,使用此名稱,稍後可以使用 getBehavior() 檢索行為,或使用 detachBehavior() 分離行為。匿名行為無法檢索或分離。

方法參數 另請參閱 https://php.dev.org.tw/manual/en/function.isset.php

在此方法中宣告的行為將自動(按需)附加到組件。

                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;
}

            
public array behaviors ( )

return

傳回指示是否可以設定屬性的值。

array

如果滿足以下條件,則可以讀取屬性

類別具有與指定名稱關聯的 getter 方法(在這種情況下,屬性名稱不區分大小寫);
$name string

$name

定義於: yii\base\Component::behaviors() 另請參閱 https://php.dev.org.tw/manual/en/function.isset.php

子類別可以覆寫此方法,以指定它們要表現為的行為。

此方法的傳回值應該是以行為名稱索引的行為物件或組態陣列。行為組態可以是指定行為類別的字串,或是具有以下結構的陣列 另請參閱 https://php.dev.org.tw/manual/en/function.isset.php

請注意,行為類別必須從 yii\base\Behavior 擴展。行為可以使用名稱或匿名方式附加。當名稱用作陣列鍵時,使用此名稱,稍後可以使用 getBehavior() 檢索行為,或使用 detachBehavior() 分離行為。匿名行為無法檢索或分離。

方法參數 另請參閱 https://php.dev.org.tw/manual/en/function.isset.php

類別具有具有指定名稱的成員變數(當 $checkVars 為 true 時);

                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;
}

            
附加的行為具有給定名稱的可讀屬性(當 $checkBehaviors 為 true 時)。
另請參閱 canSetProperty()

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

傳回此類別的完整限定名稱。

$name
方法參數 string

屬性名稱

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

            
$checkVars

是否將成員變數視為屬性

從組件分離行為。

$checkBehaviors

是否將行為的屬性視為此組件的屬性
$name string

return

方法參數 boolean

是否可以讀取屬性

                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;
}

            

如果滿足以下條件,則可以寫入屬性

從組件分離所有行為。

類別具有與指定名稱關聯的 setter 方法(在這種情況下,屬性名稱不區分大小寫);

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

            
附加的行為具有給定名稱的可寫屬性(當 $checkBehaviors 為 true 時)。

另請參閱 canGetProperty()

結束小工具。

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

$name

屬性名稱
方法參數 yii\base\Widget

$checkVars

方法傳回值 屬性值或行為屬性的值

是否將成員變數視為屬性

                public static function end()
{
    if (!empty(self::$stack)) {
        $widget = array_pop(self::$stack);
        $calledClass = get_called_class();
        if (Yii::$container->has($calledClass) && isset(Yii::$container->getDefinitions()[$calledClass]['class'])) {
            $calledClass = Yii::$container->getDefinitions()[$calledClass]['class'];
        }
        if (get_class($widget) === $calledClass) {
            /* @var $widget Widget */
            if ($widget->beforeRun()) {
                $result = $widget->run();
                $result = $widget->afterRun($result);
                echo $result;
            }
            return $widget;
        }
        throw new InvalidCallException('Expecting end() of ' . get_class($widget) . ', found ' . get_called_class());
    }
    throw new InvalidCallException('Unexpected ' . get_called_class() . '::end() call. A matching begin() is not found.');
}

            
$checkBehaviors

是否將行為的屬性視為此組件的屬性

確保在 behaviors() 中宣告的行為已附加到此組件。

return

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

            

是否可以寫入屬性

傳回具名的行為物件。

定義於: yii\base\BaseObject::className()
$name string

自 2.0.14 版本起已棄用。在 PHP >=5.5 上,請改用 ::class

方法參數 boolean

public static string className ( )

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

            
return

string

傳回附加到此組件的所有行為。

此類別的完整限定名稱。
方法參數 yii\base\Behavior[]

定義於: yii\base\Component::detachBehavior()

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

            
將調用行為的 yii\base\Behavior::detach() 方法。

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

傳回小工具的 ID。

$name
行為的名稱。 另請參閱 https://php.dev.org.tw/manual/en/function.isset.php

return

方法參數 string|null

Widget 的 ID。

                public function getId($autoGenerate = true)
{
    if ($autoGenerate && $this->_id === null) {
        $this->_id = static::$autoIdPrefix . static::$counter++;
    }
    return $this->_id;
}

            
getView() public method

Defined in: yii\base\Widget::getView()

傳回可用於渲染視圖或視圖檔案的視圖物件。

render()renderFile() 方法將使用此視圖物件來實現實際的視圖渲染。如果未設定,預設為 "view" 應用程式元件。

public yii\web\View getView ( )
方法參數 yii\web\View

可用於渲染視圖或視圖檔案的視圖物件。

                public function getView()
{
    if ($this->_view === null) {
        $this->_view = Yii::$app->getView();
    }
    return $this->_view;
}

            
getViewPath() public method

Defined in: yii\base\Widget::getViewPath()

傳回包含此小工具視圖檔案的目錄。

預設實作會回傳小工具類別檔案所在目錄下的 'views' 子目錄。

public string getViewPath ( )
方法參數 string

包含此小工具視圖檔案的目錄。

                public function getViewPath()
{
    $class = new ReflectionClass($this);
    return dirname($class->getFileName()) . DIRECTORY_SEPARATOR . 'views';
}

            
hasEventHandlers() public method

Defined in: yii\base\Component::hasEventHandlers()

傳回指示是否有名稱事件附加任何處理常式的值。

public boolean hasEventHandlers ( $name )
$name string

事件名稱

方法參數 另請參閱 https://php.dev.org.tw/manual/en/function.isset.php

是否有任何處理器附加到事件。

                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() public method

Defined in: yii\base\Component::hasMethod()

傳回指示是否已定義方法的值。

如果符合以下條件,則定義了方法

  • 類別具有指定名稱的方法
  • 附加的行為具有給定名稱的方法 (當 $checkBehaviors 為 true 時)。
public boolean hasMethod ( $name, $checkBehaviors true )
$name string

$name

此方法的傳回值應該是以行為名稱索引的行為物件或組態陣列。行為組態可以是指定行為類別的字串,或是具有以下結構的陣列 另請參閱 https://php.dev.org.tw/manual/en/function.isset.php

是否將行為的方法視為此元件的方法

方法參數 另請參閱 https://php.dev.org.tw/manual/en/function.isset.php

是否已定義方法

                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() public method

Defined in: yii\base\Component::hasProperty()

傳回指示是否已為此組件定義屬性的值。

如果符合以下條件,則定義了屬性

  • 類別具有與指定名稱相關聯的 getter 或 setter 方法 (在這種情況下,屬性名稱不區分大小寫);
  • public static static begin ( $config = [] )
  • 附加的行為具有給定名稱的屬性 (當 $checkBehaviors 為 true 時)。

另請參閱

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

$name

定義於: yii\base\Component::behaviors() 另請參閱 https://php.dev.org.tw/manual/en/function.isset.php

子類別可以覆寫此方法,以指定它們要表現為的行為。

此方法的傳回值應該是以行為名稱索引的行為物件或組態陣列。行為組態可以是指定行為類別的字串,或是具有以下結構的陣列 另請參閱 https://php.dev.org.tw/manual/en/function.isset.php

請注意,行為類別必須從 yii\base\Behavior 擴展。行為可以使用名稱或匿名方式附加。當名稱用作陣列鍵時,使用此名稱,稍後可以使用 getBehavior() 檢索行為,或使用 detachBehavior() 分離行為。匿名行為無法檢索或分離。

方法參數 另請參閱 https://php.dev.org.tw/manual/en/function.isset.php

是否已定義屬性

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

            
init() public method

開始記錄剪輯。

public void init ( )

                public function init()
{
    parent::init();
    if ($this->viewFile === null) {
        throw new InvalidConfigException('ContentDecorator::viewFile must be set.');
    }
    ob_start();
    ob_implicit_flush(false);
}

            
off() public method

Defined in: yii\base\Component::off()

從此組件分離現有的事件處理常式。

此方法與 on() 相反。

注意:如果為事件名稱傳遞了萬用字元模式,則只會移除使用此萬用字元註冊的處理器,而使用符合此萬用字元的純名稱註冊的處理器將保持不變。

另請參閱 on()

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

事件名稱

$handler callable|null

要移除的事件處理器。如果為 null,則會移除附加到具名事件的所有處理器。

方法參數 另請參閱 https://php.dev.org.tw/manual/en/function.isset.php

如果找到並分離處理器

                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() public method

Defined in: yii\base\Component::on()

將事件處理常式附加到事件。

事件處理器必須是有效的 PHP 回呼。以下是一些範例

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

事件處理器必須使用以下簽章定義,

function ($event)

其中 $eventyii\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 return

當觸發事件時,要傳遞給事件處理器的資料。當叫用事件處理器時,可以透過 yii\base\Event::$data 存取此資料。

$append 另請參閱 https://php.dev.org.tw/manual/en/function.isset.php

是否將新的事件處理器附加到現有處理器清單的末尾。如果為 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]);
    }
}

            
render() public method

Defined in: yii\base\Widget::render()

渲染視圖。

要渲染的視圖可以使用以下格式之一指定

  • 路徑別名 (例如 "@app/views/site/index");
  • 應用程式內的絕對路徑 (例如 "//site/index"):視圖名稱以雙斜線開頭。實際的視圖檔案將在應用程式的 視圖路徑 下尋找。
  • 模組內的絕對路徑 (例如 "/site/index"):視圖名稱以單斜線開頭。實際的視圖檔案將在目前活動模組的 視圖路徑 下尋找。
  • 相對路徑 (例如 "index"):實際的視圖檔案將在 $viewPath 下尋找。

如果視圖名稱不包含檔案副檔名,則將使用預設副檔名 .php

public string render ( $view, $params = [] )
$view string

視圖名稱。

$params array

應在視圖中提供的參數 (名稱-值 對)。

方法參數 string

渲染結果。

方法傳回值 yii\base\InvalidArgumentException

如果視圖檔案不存在。

                public function render($view, $params = [])
{
    return $this->getView()->render($view, $params, $this);
}

            
renderFile() public method

Defined in: yii\base\Widget::renderFile()

渲染視圖檔案。

public string renderFile ( $file, $params = [] )
$file string

要渲染的視圖檔案。這可以是檔案路徑或 路徑別名

$params array

應在視圖中提供的參數 (名稱-值 對)。

方法參數 string

渲染結果。

方法傳回值 yii\base\InvalidArgumentException

如果視圖檔案不存在。

                public function renderFile($file, $params = [])
{
    return $this->getView()->renderFile($file, $params, $this);
}

            
run() public method

結束記錄剪輯。

此方法停止輸出緩衝,並將渲染結果儲存為控制器中的具名片段。

public void run ( )

                public function run()
{
    $params = $this->params;
    $params['content'] = ob_get_clean();
    // render under the existing context
    echo $this->view->renderFile($this->viewFile, $params);
}

            
setId() public method

Defined in: yii\base\Widget::setId()

設定小工具的 ID。

public void setId ( $value )
行為的屬性:設定行為屬性值 string

小工具的 ID。

                public function setId($value)
{
    $this->_id = $value;
}

            
setView() public method

Defined in: yii\base\Widget::setView()

設定此小工具要使用的視圖物件。

public void setView ( $view )
$view yii\base\View

可用於渲染視圖或視圖檔案的視圖物件。

                public function setView($view)
{
    $this->_view = $view;
}

            
trigger() public method

Defined in: 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);
}

            
widget() public static method

Defined in: yii\base\Widget::widget()

建立小工具實例並執行它。

小工具渲染結果由此方法回傳。

public static string widget ( $config = [] )
public void __construct ( $config = [] ) array

$config

方法參數 string

小工具的渲染結果。

方法傳回值 Throwable

                public static function widget($config = [])
{
    ob_start();
    ob_implicit_flush(false);
    try {
        /* @var $widget Widget */
        $config['class'] = get_called_class();
        $widget = Yii::createObject($config);
        $out = '';
        if ($widget->beforeRun()) {
            $result = $widget->run();
            $out = $widget->afterRun($result);
        }
    } catch (\Exception $e) {
        // close the output buffer opened above if it has not been closed already
        if (ob_get_level() > 0) {
            ob_end_clean();
        }
        throw $e;
    } catch (\Throwable $e) {
        // close the output buffer opened above if it has not been closed already
        if (ob_get_level() > 0) {
            ob_end_clean();
        }
        throw $e;
    }
    return ob_get_clean() . $out;
}