类 yii\grid\ActionColumn
继承关系 | yii\grid\ActionColumn » yii\grid\Column » yii\base\BaseObject |
---|---|
实现接口 | yii\base\Configurable |
可用版本 | 2.0 |
源代码 | https://github.com/yiisoft/yii2/blob/master/framework/grid/ActionColumn.php |
ActionColumn 是 yii\grid\GridView 组件的一列,用于显示查看和操作项目的按钮。
要将 ActionColumn 添加到 gridview,请将其添加到 columns 配置中,如下所示
'columns' => [
// ...
[
'class' => ActionColumn::class,
// you may configure additional properties here
],
]
有关 ActionColumn 的更多详细信息和使用信息,请参阅 数据组件指南文章。
公共属性
属性 | 类型 | 描述 | 定义于 |
---|---|---|---|
$buttonOptions | array | 将应用于 默认按钮 的 HTML 选项。 | yii\grid\ActionColumn |
$buttons | array | 按钮渲染回调函数。 | yii\grid\ActionColumn |
$content | callable | 这是一个可调用对象,将用于生成每个单元格的内容。 | yii\grid\Column |
$contentOptions | array|Closure | 数据单元格标签的 HTML 属性。 | yii\grid\Column |
$controller | string|null | 应处理此处指定的动作的控制器的 ID。 | yii\grid\ActionColumn |
$filterOptions | array | 过滤器单元格标签的 HTML 属性。 | yii\grid\Column |
$footer | string | 页脚单元格内容。 | yii\grid\Column |
$footerOptions | array | 页脚单元格标签的 HTML 属性。 | yii\grid\Column |
$grid | yii\grid\GridView | 拥有此列的 grid view 对象。 | yii\grid\Column |
$header | string|null | 表头单元格内容。 | yii\grid\Column |
$headerOptions | array | 表头单元格标签的 HTML 属性。 | yii\grid\ActionColumn |
$icons | array | 按钮图标。 | yii\grid\ActionColumn |
$options | array | 列组标签的 HTML 属性。 | yii\grid\Column |
$template | string | 用于组合操作列中每个单元格的模板。 | yii\grid\ActionColumn |
$urlCreator | callable|null | 一个回调函数,使用指定的模型信息创建按钮 URL。 | yii\grid\ActionColumn |
$visible | boolean | 此列是否可见。 | yii\grid\Column |
$visibleButtons | array | 每个按钮的可见性条件。 | yii\grid\ActionColumn |
公共方法
方法 | 描述 | 定义于 |
---|---|---|
__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 |
createUrl() | 为给定的操作和模型创建 URL。 | yii\grid\ActionColumn |
hasMethod() | 返回一个值,指示方法是否已定义。 | yii\base\BaseObject |
hasProperty() | 返回一个值,指示属性是否已定义。 | yii\base\BaseObject |
init() | 初始化对象。 | yii\grid\ActionColumn |
renderDataCell() | 渲染数据单元格。 | yii\grid\Column |
renderFilterCell() | 渲染过滤器单元格。 | yii\grid\Column |
renderFooterCell() | 渲染页脚单元格。 | yii\grid\Column |
renderHeaderCell() | 渲染表头单元格。 | yii\grid\Column |
受保护的方法
方法 | 描述 | 定义于 |
---|---|---|
getHeaderCellLabel() | 返回表头单元格标签。 | yii\grid\Column |
initDefaultButton() | 初始化单个按钮的默认按钮渲染回调函数。 | yii\grid\ActionColumn |
initDefaultButtons() | 初始化默认按钮渲染回调函数。 | yii\grid\ActionColumn |
renderDataCellContent() | 渲染数据单元格内容。 | yii\grid\ActionColumn |
renderFilterCellContent() | 渲染过滤器单元格内容。 | yii\grid\Column |
renderFooterCellContent() | 渲染页脚单元格内容。 | yii\grid\Column |
renderHeaderCellContent() | 渲染表头单元格内容。 | yii\grid\Column |
属性详情
应处理此处指定操作的控制器的 ID。如果未设置,它将使用当前活动的控制器。此属性主要由 $urlCreator 用于为不同的操作创建 URL。此属性的值将作为前缀添加到每个操作名称,以形成操作的路由。
按钮图标。数组键是图标名称,值是相应的 html: `
php [
'eye-open' => '<svg ...></svg>',
'pencil' => Html::tag('span', '', ['class' => 'glyphicon glyphicon-pencil'])
] `
默认使用 FontAwesome 5 免费 svg 图标。
另请参阅 https://fontawesome.com。
'eye-open' => '<svg aria-hidden="true" style="display:inline-block;font-size:inherit;height:1em;overflow:visible;vertical-align:-.125em;width:1.125em" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path fill="currentColor" d="M573 241C518 136 411 64 288 64S58 136 3 241a32 32 0 000 30c55 105 162 177 285 177s230-72 285-177a32 32 0 000-30zM288 400a144 144 0 11144-144 144 144 0 01-144 144zm0-240a95 95 0 00-25 4 48 48 0 01-67 67 96 96 0 1092-71z"/></svg>',
'pencil' => '<svg aria-hidden="true" style="display:inline-block;font-size:inherit;height:1em;overflow:visible;vertical-align:-.125em;width:1em" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M498 142l-46 46c-5 5-13 5-17 0L324 77c-5-5-5-12 0-17l46-46c19-19 49-19 68 0l60 60c19 19 19 49 0 68zm-214-42L22 362 0 484c-3 16 12 30 28 28l122-22 262-262c5-5 5-13 0-17L301 100c-4-5-12-5-17 0zM124 340c-5-6-5-14 0-20l154-154c6-5 14-5 20 0s5 14 0 20L144 340c-6 5-14 5-20 0zm-36 84h48v36l-64 12-32-31 12-65h36v48z"/></svg>',
'trash' => '<svg aria-hidden="true" style="display:inline-block;font-size:inherit;height:1em;overflow:visible;vertical-align:-.125em;width:.875em" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M32 464a48 48 0 0048 48h288a48 48 0 0048-48V128H32zm272-256a16 16 0 0132 0v224a16 16 0 01-32 0zm-96 0a16 16 0 0132 0v224a16 16 0 01-32 0zm-96 0a16 16 0 0132 0v224a16 16 0 01-32 0zM432 32H312l-9-19a24 24 0 00-22-13H167a24 24 0 00-22 13l-9 19H16A16 16 0 000 48v32a16 16 0 0016 16h416a16 16 0 0016-16V48a16 16 0 00-16-16z"/></svg>',
]
一个回调,它使用指定的模型信息创建按钮 URL。回调的签名应与 createUrl() 的签名相同 自 2.0.10 起,它可以接受额外的参数,该参数引用列实例本身
function (string $action, mixed $model, mixed $key, integer $index, ActionColumn $this) {
//return string;
}
如果未设置此属性,则将使用 createUrl() 创建按钮 URL。
每个按钮的可见性条件。数组键是按钮名称(不带花括号),值是布尔值 true/false 或匿名函数。当此数组中未指定按钮名称时,默认情况下将显示它。回调必须使用以下签名
function ($model, $key, $index) {
return $model->status === 'editable';
}
或者您可以传递一个布尔值
[
'update' => \Yii::$app->user->can('update'),
],
方法详情
public 混合 __call ( $name, $params ) | ||
$name | string |
方法名称 |
$params | array |
方法参数 |
返回值 | 混合 |
方法返回值 |
---|---|---|
抛出 | yii\base\UnknownMethodException |
调用未知方法时 |
public function __call($name, $params)
{
throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}
定义于: 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();
}
定义于: yii\base\BaseObject::__get()
返回对象属性的值。
不要直接调用此方法,因为它是一个 PHP 魔术方法,当执行 $value = $object->property;
时会隐式调用。
另请参阅 __set()。
public 混合 __get ( $name ) | ||
$name | string |
属性名称 |
返回值 | 混合 |
属性值 |
---|---|---|
抛出 | yii\base\UnknownPropertyException |
如果未定义属性 |
抛出 | 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);
}
定义于: yii\base\BaseObject::__isset()
检查属性是否已设置,即已定义且不为 null。
不要直接调用此方法,因为它是一个 PHP 魔术方法,在执行 isset($object->property)
时会被隐式调用。
请注意,如果属性未定义,则将返回 false。
public boolean __isset ( $name ) | ||
$name | string |
属性名称或事件名称 |
返回值 | boolean |
指定的属性是否已设置(非空)。 |
---|
public function __isset($name)
{
$getter = 'get' . $name;
if (method_exists($this, $getter)) {
return $this->$getter() !== null;
}
return false;
}
定义于: yii\base\BaseObject::__set()
设置对象属性的值。
不要直接调用此方法,因为它是一个 PHP 魔术方法,在执行 $object->property = $value;
时会被隐式调用。
另请参阅 __get()。
public void __set ( $name, $value ) | ||
$name | string |
属性名称或事件名称 |
$value | 混合 |
属性值 |
抛出 | yii\base\UnknownPropertyException |
如果未定义属性 |
---|---|---|
抛出 | 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);
}
}
定义于: yii\base\BaseObject::__unset()
将对象属性设置为 null。
不要直接调用此方法,因为它是一个 PHP 魔术方法,在执行 unset($object->property)
时会被隐式调用。
请注意,如果属性未定义,则此方法将不执行任何操作。如果属性为只读,则会抛出异常。
public void __unset ( $name ) | ||
$name | string |
属性名称 |
抛出 | 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);
}
}
定义于: yii\base\BaseObject::canGetProperty()
返回一个值,指示是否可以读取属性。
如果满足以下条件,则属性可读:
- 类具有与指定名称关联的 getter 方法(在这种情况下,属性名称不区分大小写);
- 类具有与指定名称相同的成员变量(当
$checkVars
为 true 时);
另请参阅 canSetProperty()。
public boolean canGetProperty ( $name, $checkVars = true ) | ||
$name | string |
属性名称 |
$checkVars | boolean |
是否将成员变量视为属性 |
返回值 | boolean |
属性是否可读 |
---|
public function canGetProperty($name, $checkVars = true)
{
return method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name);
}
定义于: yii\base\BaseObject::canSetProperty()
返回一个值,指示是否可以设置属性。
如果满足以下条件,则属性可写:
- 类具有与指定名称关联的 setter 方法(在这种情况下,属性名称不区分大小写);
- 类具有与指定名称相同的成员变量(当
$checkVars
为 true 时);
另请参阅 canGetProperty()。
public boolean canSetProperty ( $name, $checkVars = true ) | ||
$name | string |
属性名称 |
$checkVars | boolean |
是否将成员变量视为属性 |
返回值 | boolean |
属性是否可写 |
---|
public function canSetProperty($name, $checkVars = true)
{
return method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name);
}
::class
。
定义于: yii\base\BaseObject::className()
返回此类的完全限定名称。
public static string className ( ) | ||
返回值 | string |
此类的完全限定名称。 |
---|
public static function className()
{
return get_called_class();
}
为给定的操作和模型创建 URL。
此方法为每个按钮和每行调用。
public string createUrl ( $action, $model, $key, $index ) | ||
$action | string |
按钮名称(或操作 ID) |
$model | yii\db\ActiveRecordInterface |
数据模型 |
$key | 混合 |
与数据模型关联的键 |
$index | integer |
当前行索引 |
返回值 | string |
创建的 URL |
---|
public function createUrl($action, $model, $key, $index)
{
if (is_callable($this->urlCreator)) {
return call_user_func($this->urlCreator, $action, $model, $key, $index, $this);
}
$params = is_array($key) ? $key : ['id' => (string) $key];
$params[0] = $this->controller ? $this->controller . '/' . $action : $action;
return Url::toRoute($params);
}
protected string getHeaderCellLabel ( ) | ||
返回值 | string |
标签 |
---|
protected function getHeaderCellLabel()
{
return $this->grid->emptyCell;
}
定义于: yii\base\BaseObject::hasMethod()
返回一个值,指示方法是否已定义。
默认实现是调用 php 函数 method_exists()
。当您实现 php 魔术方法 __call()
时,可以重写此方法。
public boolean hasMethod ( $name ) | ||
$name | string |
方法名称 |
返回值 | boolean |
方法是否已定义 |
---|
public function hasMethod($name)
{
return method_exists($this, $name);
}
定义于: yii\base\BaseObject::hasProperty()
返回一个值,指示属性是否已定义。
如果满足以下条件,则属性已定义:
- 类具有与指定名称关联的 getter 或 setter 方法(在这种情况下,属性名称不区分大小写);
- 类具有与指定名称相同的成员变量(当
$checkVars
为 true 时);
另请参阅
public boolean hasProperty ( $name, $checkVars = true ) | ||
$name | string |
属性名称 |
$checkVars | boolean |
是否将成员变量视为属性 |
返回值 | boolean |
属性是否已定义 |
---|
public function hasProperty($name, $checkVars = true)
{
return $this->canGetProperty($name, $checkVars) || $this->canSetProperty($name, false);
}
初始化对象。
此方法在构造函数结束后调用,此时对象已使用给定的配置进行初始化。
public void init ( ) |
public function init()
{
parent::init();
$this->initDefaultButtons();
}
初始化单个按钮的默认按钮渲染回调函数。
受保护 void initDefaultButton ( $name, $iconName, $additionalOptions = [] ) | ||
$name | string |
按钮名称,如模板中所写 |
$iconName | string |
使 Bootstrap glyphicon 类唯一的组成部分 |
$additionalOptions | array |
其他选项的数组 |
protected function initDefaultButton($name, $iconName, $additionalOptions = [])
{
if (!isset($this->buttons[$name]) && strpos($this->template, '{' . $name . '}') !== false) {
$this->buttons[$name] = function ($url, $model, $key) use ($name, $iconName, $additionalOptions) {
switch ($name) {
case 'view':
$title = Yii::t('yii', 'View');
break;
case 'update':
$title = Yii::t('yii', 'Update');
break;
case 'delete':
$title = Yii::t('yii', 'Delete');
break;
default:
$title = ucfirst($name);
}
$options = array_merge([
'title' => $title,
'aria-label' => $title,
'data-pjax' => '0',
], $additionalOptions, $this->buttonOptions);
$icon = isset($this->icons[$iconName])
? $this->icons[$iconName]
: Html::tag('span', '', ['class' => "glyphicon glyphicon-$iconName"]);
return Html::a($icon, $url, $options);
};
}
}
初始化默认按钮渲染回调函数。
受保护 void initDefaultButtons ( ) |
protected function initDefaultButtons()
{
$this->initDefaultButton('view', 'eye-open');
$this->initDefaultButton('update', 'pencil');
$this->initDefaultButton('delete', 'trash', [
'data-confirm' => Yii::t('yii', 'Are you sure you want to delete this item?'),
'data-method' => 'post',
]);
}
定义于: yii\grid\Column::renderDataCell()
渲染数据单元格。
公共 string renderDataCell ( $model, $key, $index ) | ||
$model | 混合 |
正在渲染的数据模型 |
$key | 混合 |
与数据模型关联的键 |
$index | integer |
数据项在 yii\grid\GridView::$dataProvider 返回的项数组中的从零开始的索引。 |
返回值 | 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);
}
渲染数据单元格内容。
受保护 string renderDataCellContent ( $model, $key, $index ) | ||
$model | 混合 |
数据模型 |
$key | 混合 |
与数据模型关联的键 |
$index | integer |
数据模型在 yii\grid\GridView::$dataProvider 返回的模型数组中的从零开始的索引。 |
返回值 | string |
渲染结果 |
---|
protected function renderDataCellContent($model, $key, $index)
{
return preg_replace_callback('/\\{([\w\-\/]+)\\}/', function ($matches) use ($model, $key, $index) {
$name = $matches[1];
if (isset($this->visibleButtons[$name])) {
$isVisible = $this->visibleButtons[$name] instanceof \Closure
? call_user_func($this->visibleButtons[$name], $model, $key, $index)
: $this->visibleButtons[$name];
} else {
$isVisible = true;
}
if ($isVisible && isset($this->buttons[$name])) {
$url = $this->createUrl($name, $model, $key, $index);
return call_user_func($this->buttons[$name], $url, $model, $key);
}
return '';
}, $this->template);
}
定义于: yii\grid\Column::renderFilterCell()
渲染过滤器单元格。
公共 void renderFilterCell ( ) |
public function renderFilterCell()
{
return Html::tag('td', $this->renderFilterCellContent(), $this->filterOptions);
}
受保护 string renderFilterCellContent ( ) | ||
返回值 | string |
渲染结果 |
---|
protected function renderFilterCellContent()
{
return $this->grid->emptyCell;
}
定义于: yii\grid\Column::renderHeaderCell()
渲染表头单元格。
公共 void renderHeaderCell ( ) |
public function renderHeaderCell()
{
return Html::tag('th', $this->renderHeaderCellContent(), $this->headerOptions);
}
受保护 string renderHeaderCellContent ( ) | ||
返回值 | string |
渲染结果 |
---|
protected function renderHeaderCellContent()
{
return $this->header !== null && trim($this->header) !== '' ? $this->header : $this->getHeaderCellLabel();
}
注册 或 登录 以发表评论。