Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yii2
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Rotua Panjaitan
yii2
Commits
1689a9ef
Commit
1689a9ef
authored
Dec 26, 2013
by
Qiang Xue
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Changed the signature of `urlCreator` and button creators for `yii\gridview\ActionColumn`
parent
abdfe30c
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
46 additions
and
15 deletions
+46
-15
CHANGELOG.md
framework/CHANGELOG.md
+1
-1
ActionColumn.php
framework/yii/grid/ActionColumn.php
+45
-14
No files found.
framework/CHANGELOG.md
View file @
1689a9ef
...
...
@@ -38,7 +38,7 @@ Yii Framework 2 Change Log
-
Chg: Renamed
`ActiveRecord::getPopulatedRelations()`
to
`getRelatedRecords()`
(qiangxue)
-
Chg: Renamed
`attributeName`
and
`className`
to
`targetAttribute`
and
`targetClass`
for
`UniqueValidator`
and
`ExistValidator`
(qiangxue)
-
Chg: Added
`yii\widgets\InputWidget::options`
(qiangxue)
-
Chg:
The signature for
`yii\gridview\ActionColumn::urlCreator`
is changed - the
`$action`
parameter is moved to the first
(qiangxue)
-
Chg:
Changed the signature of
`urlCreator`
and button creators for
`yii\gridview\ActionColumn`
(qiangxue)
-
New #1438:
[
MongoDB integration
](
https://github.com/yiisoft/yii2-mongodb
)
ActiveRecord and Query (klimov-paul)
-
New #1393:
[
Codeception testing framework integration
](
https://github.com/yiisoft/yii2-codeception
)
(
Ragazzo
)
...
...
framework/yii/grid/ActionColumn.php
View file @
1689a9ef
...
...
@@ -26,40 +26,68 @@ class ActionColumn extends Column
* to each action name to form the route of the action.
*/
public
$controller
;
/**
* @var string the template used for composing each cell in the action column.
* Tokens enclosed within curly brackets are treated as controller action IDs (also called *button names*
* in the context of action column). They will be replaced by the corresponding button rendering callbacks
* specified in [[buttons]]. For example, the token `{view}` will be replaced by the result of
* the callback `buttons['view']`. If a callback cannot be found, the token will be replaced with an empty string.
* @see buttons
*/
public
$template
=
'{view} {update} {delete}'
;
/**
* @var array button rendering callbacks. The array keys are the button names (without curly brackets),
* and the values are the corresponding button rendering callbacks. The callbacks should use the following
* signature:
*
* ```php
* function ($url, $model) {
* // return the button HTML code
* }
* ```
*
* where `$url` is the URL that the column creates for the button, and `$model` is the model object
* being rendered for the current row.
*/
public
$buttons
=
[];
/**
* @var callback a callback that creates a button URL using the specified model information.
* The signature of the callback should be the same as that of [[createUrl()]].
* If this property is not set, button URLs will be created using [[createUrl()]].
*/
public
$urlCreator
;
/**
* @inheritdoc
*/
public
function
init
()
{
parent
::
init
();
$this
->
initDefaultButtons
();
}
/**
* Initializes the default button rendering callbacks
*/
protected
function
initDefaultButtons
()
{
if
(
!
isset
(
$this
->
buttons
[
'view'
]))
{
$this
->
buttons
[
'view'
]
=
function
(
$model
,
$key
,
$index
,
$column
)
{
/** @var ActionColumn $column */
$url
=
$column
->
createUrl
(
'view'
,
$model
,
$key
,
$index
);
$this
->
buttons
[
'view'
]
=
function
(
$url
,
$model
)
{
return
Html
::
a
(
'<span class="glyphicon glyphicon-eye-open"></span>'
,
$url
,
[
'title'
=>
Yii
::
t
(
'yii'
,
'View'
),
]);
};
}
if
(
!
isset
(
$this
->
buttons
[
'update'
]))
{
$this
->
buttons
[
'update'
]
=
function
(
$model
,
$key
,
$index
,
$column
)
{
/** @var ActionColumn $column */
$url
=
$column
->
createUrl
(
'update'
,
$model
,
$key
,
$index
);
$this
->
buttons
[
'update'
]
=
function
(
$url
,
$model
)
{
return
Html
::
a
(
'<span class="glyphicon glyphicon-pencil"></span>'
,
$url
,
[
'title'
=>
Yii
::
t
(
'yii'
,
'Update'
),
]);
};
}
if
(
!
isset
(
$this
->
buttons
[
'delete'
]))
{
$this
->
buttons
[
'delete'
]
=
function
(
$model
,
$key
,
$index
,
$column
)
{
/** @var ActionColumn $column */
$url
=
$column
->
createUrl
(
'delete'
,
$model
,
$key
,
$index
);
$this
->
buttons
[
'delete'
]
=
function
(
$url
,
$model
)
{
return
Html
::
a
(
'<span class="glyphicon glyphicon-trash"></span>'
,
$url
,
[
'title'
=>
Yii
::
t
(
'yii'
,
'Delete'
),
'data-confirm'
=>
Yii
::
t
(
'yii'
,
'Are you sure to delete this item?'
),
...
...
@@ -70,11 +98,13 @@ class ActionColumn extends Column
}
/**
* @param string $action
* @param \yii\db\ActiveRecord $model
* Creates a URL for the given action and model.
* This method is called for each button and each row.
* @param string $action the button name (or action ID)
* @param \yii\db\ActiveRecord $model the data model
* @param mixed $key the key associated with the data model
* @param integer $index
* @return string
* @param integer $index
the current row index
* @return string
the created URL
*/
public
function
createUrl
(
$action
,
$model
,
$key
,
$index
)
{
...
...
@@ -95,7 +125,8 @@ class ActionColumn extends Column
return
preg_replace_callback
(
'/\\{(\w+)\\}/'
,
function
(
$matches
)
use
(
$model
,
$key
,
$index
)
{
$name
=
$matches
[
1
];
if
(
isset
(
$this
->
buttons
[
$name
]))
{
return
call_user_func
(
$this
->
buttons
[
$name
],
$model
,
$key
,
$index
,
$this
);
$url
=
$this
->
createUrl
(
$name
,
$model
,
$key
,
$index
);
return
call_user_func
(
$this
->
buttons
[
$name
],
$url
,
$model
);
}
else
{
return
''
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment