0 追蹤者

類別 yii\grid\CheckboxColumn

繼承關係yii\grid\CheckboxColumn » yii\grid\Column » yii\base\BaseObject
實作介面yii\base\Configurable
自版本起可用2.0
原始碼 https://github.com/yiisoft/yii2/blob/master/framework/grid/CheckboxColumn.php

CheckboxColumn 在網格視圖中顯示一個核取方塊的欄位。

若要將 CheckboxColumn 加入到 yii\grid\GridView,請將其加入到 columns 設定,如下所示

'columns' => [
    // ...
    [
        'class' => 'yii\grid\CheckboxColumn',
        // you may configure additional properties here
    ],
]

使用者可以點擊核取方塊來選取網格的列。選取的列可以透過呼叫以下 JavaScript 程式碼取得

var keys = $('#grid').yiiGridView('getSelectedRows');
// keys is an array consisting of the keys associated with the selected rows

關於 CheckboxColumn 的更多詳細資訊和用法,請參閱關於資料小部件的指南文章

公開屬性

隱藏繼承的屬性

屬性 類型 描述 定義於
$checkboxOptions array|Closure 核取方塊的 HTML 屬性。 yii\grid\CheckboxColumn
$content callable 這是一個可呼叫的函式,將用於產生每個儲存格的內容。 yii\grid\Column
$contentOptions array|Closure 資料儲存格標籤的 HTML 屬性。 yii\grid\Column
$cssClass string 將用於尋找核取方塊的 CSS 類別。 yii\grid\CheckboxColumn
$filterOptions array 篩選器儲存格標籤的 HTML 屬性。 yii\grid\Column
$footer string 頁腳儲存格內容。 yii\grid\Column
$footerOptions array 頁腳儲存格標籤的 HTML 屬性。 yii\grid\Column
$grid yii\grid\GridView 擁有此欄位的網格視圖物件。 yii\grid\Column
$header string|null 標頭儲存格內容。 yii\grid\Column
$headerOptions array 標頭儲存格標籤的 HTML 屬性。 yii\grid\Column
$multiple boolean 是否可以選取多列。 yii\grid\CheckboxColumn
$name string 核取方塊輸入欄位的名稱。 yii\grid\CheckboxColumn
$options array 欄位群組標籤的 HTML 屬性。 yii\grid\Column
$visible boolean 此欄位是否可見。 yii\grid\Column

公開方法

隱藏繼承的方法

方法 描述 定義於
__call() 呼叫指定的非類別方法。 yii\base\BaseObject
__construct() 建構子。 yii\base\BaseObject
__get() 傳回物件屬性的值。 yii\base\BaseObject
__isset() 檢查屬性是否已設定,即已定義且非 null。 yii\base\BaseObject
__set() 設定物件屬性的值。 yii\base\BaseObject
__unset() 將物件屬性設定為 null。 yii\base\BaseObject
canGetProperty() 傳回一個值,指示是否可以讀取屬性。 yii\base\BaseObject
canSetProperty() 傳回一個值,指示是否可以設定屬性。 yii\base\BaseObject
className() 傳回此類別的完整限定名稱。 yii\base\BaseObject
hasMethod() 傳回一個值,指示是否已定義方法。 yii\base\BaseObject
hasProperty() 傳回一個值,指示是否已定義屬性。 yii\base\BaseObject
init() 初始化物件。 yii\grid\CheckboxColumn
registerClientScript() 註冊需要的 JavaScript。 yii\grid\CheckboxColumn
renderDataCell() 渲染資料儲存格。 yii\grid\Column
renderFilterCell() 渲染篩選器儲存格。 yii\grid\Column
renderFooterCell() 渲染頁腳儲存格。 yii\grid\Column
renderHeaderCell() 渲染標頭儲存格。 yii\grid\Column

保護方法

隱藏繼承的方法

方法 描述 定義於
getHeaderCellLabel() 傳回標頭儲存格標籤。 yii\grid\Column
getHeaderCheckBoxName() 傳回標頭核取方塊名稱。 yii\grid\CheckboxColumn
renderDataCellContent() 渲染資料儲存格內容。 yii\grid\CheckboxColumn
renderFilterCellContent() 渲染篩選器儲存格內容。 yii\grid\Column
renderFooterCellContent() 渲染頁尾儲存格內容。 yii\grid\Column
renderHeaderCellContent() 渲染標頭儲存格內容。 yii\grid\CheckboxColumn

屬性詳情

隱藏繼承的屬性

$checkboxOptions public property

核取方塊的 HTML 屬性。這可以是屬性陣列或返回此類陣列的匿名函式 (Closure)。函式的簽章應如下所示:function ($model, $key, $index, $column)。其中 $model$key$index 指的是目前正在渲染的列的模型、鍵和索引,而 $column 是對 yii\grid\CheckboxColumn 物件的引用。可以使用函式根據該列中的資料為不同的列分配不同的屬性。具體來說,如果您想為核取方塊設定不同的值,您可以透過以下方式使用此選項(在本範例中使用模型的 name 屬性)

'checkboxOptions' => function ($model, $key, $index, $column) {
    return ['value' => $model->name];
}

另請參閱 yii\helpers\Html::renderTagAttributes(),以了解如何渲染屬性的詳細資訊。

$cssClass public property (自 2.0.9 版本起可用)

將用於尋找核取方塊的 CSS 類別。

public string $cssClass null
$multiple public property

是否可以選擇多列。預設值為 true

public boolean $multiple true
$name public property

輸入核取方塊輸入欄位的名稱。這將附加 [] 以確保它是一個陣列。

public string $name 'selection'

方法詳情

隱藏繼承的方法

__call() public method

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

呼叫指定的非類別方法。

不要直接呼叫此方法,因為它是一個 PHP 魔術方法,當呼叫未知方法時,它會被隱式呼叫。

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

方法名稱

$params array

方法參數

return mixed

方法傳回值

throws yii\base\UnknownMethodException

當呼叫未知方法時

                public function __call($name, $params)
{
    throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}

            
__construct() public method

定義於: 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() public method

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

傳回物件屬性的值。

不要直接呼叫此方法,因為它是一個 PHP 魔術方法,當執行 $value = $object->property; 時,它會被隱式呼叫。

另請參閱 __set()

public mixed __get ( $name )
$name string

屬性名稱

return mixed

屬性值

throws yii\base\UnknownPropertyException

如果未定義屬性

throws yii\base\InvalidCallException

如果屬性是唯寫的

                public function __get($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter();
    } elseif (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() public method

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

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

不要直接呼叫此方法,因為它是一個 PHP 魔術方法,當執行 isset($object->property) 時,它會被隱式呼叫。

請注意,如果未定義屬性,將傳回 false。

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

public boolean __isset ( $name )
$name string

屬性名稱或事件名稱

return boolean

具名的屬性是否已設定(非 null)。

                public function __isset($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter() !== null;
    }
    return false;
}

            
__set() public method

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

設定物件屬性的值。

不要直接呼叫此方法,因為它是一個 PHP 魔術方法,當執行 $object->property = $value; 時,它會被隱式呼叫。

另請參閱 __get()

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

屬性名稱或事件名稱

$value mixed

屬性值

throws yii\base\UnknownPropertyException

如果未定義屬性

throws yii\base\InvalidCallException

如果屬性是唯讀的

                public function __set($name, $value)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter($value);
    } elseif (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
    } else {
        throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
    }
}

            
__unset() public method

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

將物件屬性設定為 null。

不要直接呼叫此方法,因為它是一個 PHP 魔術方法,當執行 unset($object->property) 時,它會被隱式呼叫。

請注意,如果未定義屬性,此方法將不會執行任何操作。如果屬性是唯讀的,它將拋出例外。

另請參閱 https://php.dev.org.tw/manual/en/function.unset.php

public void __unset ( $name )
$name string

屬性名稱

throws yii\base\InvalidCallException

如果屬性是唯讀的。

                public function __unset($name)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter(null);
    } elseif (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Unsetting read-only property: ' . get_class($this) . '::' . $name);
    }
}

            
canGetProperty() public method

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

傳回一個值,指示是否可以讀取屬性。

如果符合以下條件,屬性是可讀取的

  • 類別具有與指定名稱關聯的 getter 方法(在這種情況下,屬性名稱不區分大小寫);
  • 類別具有具有指定名稱的成員變數(當 $checkVars 為 true 時);

另請參閱 canSetProperty()

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

屬性名稱

$checkVars boolean

是否將成員變數視為屬性

return boolean

屬性是否可讀取

                public function canGetProperty($name, $checkVars = true)
{
    return method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name);
}

            
canSetProperty() public method

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

傳回一個值,指示是否可以設定屬性。

如果符合以下條件,屬性是可寫入的

  • 類別具有與指定名稱關聯的 setter 方法(在這種情況下,屬性名稱不區分大小寫);
  • 類別具有具有指定名稱的成員變數(當 $checkVars 為 true 時);

另請參閱 canGetProperty()

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

屬性名稱

$checkVars boolean

是否將成員變數視為屬性

return boolean

屬性是否可寫入

                public function canSetProperty($name, $checkVars = true)
{
    return method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name);
}

            
className() public static method
自 2.0.14 版本起已過時。在 PHP >=5.5 上,請改用 ::class

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

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

public static string className ( )
return string

此類別的完整限定名稱。

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

            
getHeaderCellLabel() protected method (自 2.0.8 版本起可用)

定義於: yii\grid\Column::getHeaderCellLabel()

傳回標頭儲存格標籤。

此方法可能會被覆寫以自訂標頭儲存格的標籤。

protected string getHeaderCellLabel ( )
return string

標籤

                protected function getHeaderCellLabel()
{
    return $this->grid->emptyCell;
}

            
getHeaderCheckBoxName() protected method (自 2.0.8 版本起可用)

傳回標頭核取方塊名稱。

protected string getHeaderCheckBoxName ( )
return string

標頭核取方塊名稱

                protected function getHeaderCheckBoxName()
{
    $name = $this->name;
    if (substr_compare($name, '[]', -2, 2) === 0) {
        $name = substr($name, 0, -2);
    }
    if (substr_compare($name, ']', -1, 1) === 0) {
        $name = substr($name, 0, -1) . '_all]';
    } else {
        $name .= '_all';
    }
    return $name;
}

            
hasMethod() public method

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

傳回一個值,指示是否已定義方法。

預設實作是對 php 函式 method_exists() 的呼叫。當您實作 php 魔術方法 __call() 時,您可以覆寫此方法。

public boolean hasMethod ( $name )
$name string

方法名稱

return boolean

方法是否已定義

                public function hasMethod($name)
{
    return method_exists($this, $name);
}

            
hasProperty() public method

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

傳回一個值,指示是否已定義屬性。

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

  • 類別具有與指定名稱關聯的 getter 或 setter 方法(在這種情況下,屬性名稱不區分大小寫);
  • 類別具有具有指定名稱的成員變數(當 $checkVars 為 true 時);

另請參閱

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

屬性名稱

$checkVars boolean

是否將成員變數視為屬性

return boolean

屬性是否已定義

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

            
init() public method

初始化物件。

在以給定組態初始化物件後,將在建構子的結尾呼叫此方法。

public void init ( )
throws yii\base\InvalidConfigException

如果未設定 $name

                public function init()
{
    parent::init();
    if (empty($this->name)) {
        throw new InvalidConfigException('The "name" property must be set.');
    }
    if (substr_compare($this->name, '[]', -2, 2)) {
        $this->name .= '[]';
    }
    $this->registerClientScript();
}

            
registerClientScript() public method (自 2.0.8 版本起可用)

註冊需要的 JavaScript。

public void registerClientScript ( )

                public function registerClientScript()
{
    $id = $this->grid->options['id'];
    $options = Json::encode([
        'name' => $this->name,
        'class' => $this->cssClass,
        'multiple' => $this->multiple,
        'checkAll' => $this->grid->showHeader ? $this->getHeaderCheckBoxName() : null,
    ]);
    $this->grid->getView()->registerJs("jQuery('#$id').yiiGridView('setSelectionColumn', $options);");
}

            
renderDataCell() public method

定義於: yii\grid\Column::renderDataCell()

渲染資料儲存格。

public string renderDataCell ( $model, $key, $index )
$model mixed

正在渲染的資料模型

$key mixed

與資料模型關聯的鍵

$index integer

yii\grid\GridView::$dataProvider 傳回的項目陣列中,資料項目的從零開始的索引。

return string

渲染結果

                public function renderDataCell($model, $key, $index)
{
    if ($this->contentOptions instanceof Closure) {
        $options = call_user_func($this->contentOptions, $model, $key, $index, $this);
    } else {
        $options = $this->contentOptions;
    }
    return Html::tag('td', $this->renderDataCellContent($model, $key, $index), $options);
}

            
renderDataCellContent() protected method

渲染資料儲存格內容。

protected string renderDataCellContent ( $model, $key, $index )
$model mixed

資料模型

$key mixed

與資料模型關聯的鍵

$index integer

yii\grid\GridView::$dataProvider 傳回的模型陣列中,資料模型的從零開始的索引。

return string

渲染結果

                protected function renderDataCellContent($model, $key, $index)
{
    if ($this->content !== null) {
        return parent::renderDataCellContent($model, $key, $index);
    }
    if ($this->checkboxOptions instanceof Closure) {
        $options = call_user_func($this->checkboxOptions, $model, $key, $index, $this);
    } else {
        $options = $this->checkboxOptions;
    }
    if (!isset($options['value'])) {
        $options['value'] = is_array($key) ? Json::encode($key) : $key;
    }
    if ($this->cssClass !== null) {
        Html::addCssClass($options, $this->cssClass);
    }
    return Html::checkbox($this->name, !empty($options['checked']), $options);
}

            
renderFilterCell() public method

定義於: yii\grid\Column::renderFilterCell()

渲染篩選器儲存格。

public void renderFilterCell ( )

                public function renderFilterCell()
{
    return Html::tag('td', $this->renderFilterCellContent(), $this->filterOptions);
}

            
renderFilterCellContent() protected method

定義於: yii\grid\Column::renderFilterCellContent()

渲染篩選器儲存格內容。

預設實作只會渲染一個空格。此方法可能會被覆寫以自訂篩選儲存格的渲染(如果有的話)。

protected string renderFilterCellContent ( )
return string

渲染結果

                protected function renderFilterCellContent()
{
    return $this->grid->emptyCell;
}

            
renderFooterCell() public method

定義於: yii\grid\Column::renderFooterCell()

渲染頁腳儲存格。

public void renderFooterCell ( )

                public function renderFooterCell()
{
    return Html::tag('td', $this->renderFooterCellContent(), $this->footerOptions);
}

            
renderFooterCellContent() protected method

定義於: yii\grid\Column::renderFooterCellContent()

渲染頁尾儲存格內容。

預設實作只會渲染 $footer。此方法可能會被覆寫以自訂頁尾儲存格的渲染。

protected string renderFooterCellContent ( )
return string

渲染結果

                protected function renderFooterCellContent()
{
    return $this->footer !== null && trim($this->footer) !== '' ? $this->footer : $this->grid->emptyCell;
}

            
renderHeaderCell() public method

定義於: yii\grid\Column::renderHeaderCell()

渲染標頭儲存格。

public void renderHeaderCell ( )

                public function renderHeaderCell()
{
    return Html::tag('th', $this->renderHeaderCellContent(), $this->headerOptions);
}

            
renderHeaderCellContent() protected method

渲染標頭儲存格內容。

預設實作只會渲染 $header。此方法可能會被覆寫以自訂標頭儲存格的渲染。

protected string renderHeaderCellContent ( )
return string

渲染結果

                protected function renderHeaderCellContent()
{
    if ($this->header !== null || !$this->multiple) {
        return parent::renderHeaderCellContent();
    }
    return Html::checkbox($this->getHeaderCheckBoxName(), false, ['class' => 'select-on-check-all']);
}