From 5fc275e935c7acf4b4b1a05d825d050ffa31877c Mon Sep 17 00:00:00 2001 From: Qiang Xue Date: Mon, 23 Dec 2013 16:36:21 -0500 Subject: [PATCH] Fixes #1499: Added `ActionColumn::controller` property to support customizing the controller for handling GridView actions --- framework/CHANGELOG.md | 1 + framework/yii/grid/ActionColumn.php | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/framework/CHANGELOG.md b/framework/CHANGELOG.md index dd9d168..ba1cff7 100644 --- a/framework/CHANGELOG.md +++ b/framework/CHANGELOG.md @@ -22,6 +22,7 @@ Yii Framework 2 Change Log - Enh #1406: DB Schema support for Oracle Database (p0larbeer, qiangxue) - Enh #1437: Added ListView::viewParams (qiangxue) - Enh #1469: ActiveRecord::find() now works with default conditions (default scope) applied by createQuery (cebe) +- Enh #1499: Added `ActionColumn::controller` property to support customizing the controller for handling GridView actions (qiangxue) - Enh #1523: Query conditions now allow to use the NOT operator (cebe) - Enh #1552: It is now possible to use multiple bootstrap NavBar in a single page (Alex-Code) - Enh #1572: Added `yii\web\Controller::createAbsoluteUrl()` (samdark) diff --git a/framework/yii/grid/ActionColumn.php b/framework/yii/grid/ActionColumn.php index 707d411..b53b606 100644 --- a/framework/yii/grid/ActionColumn.php +++ b/framework/yii/grid/ActionColumn.php @@ -19,6 +19,13 @@ use yii\helpers\Html; */ class ActionColumn extends Column { + /** + * @var string the ID of the controller that should handle the actions specified here. + * If not set, it will use the currently active controller. This property is mainly used by + * [[urlCreator]] to create URLs for different actions. The value of this property will be prefixed + * to each action name to form the route of the action. + */ + public $controller; public $template = '{view} {update} {delete}'; public $buttons = []; public $urlCreator; @@ -75,7 +82,8 @@ class ActionColumn extends Column return call_user_func($this->urlCreator, $model, $key, $index, $action); } else { $params = is_array($key) ? $key : ['id' => $key]; - return Yii::$app->controller->createUrl($action, $params); + $route = $this->controller ? $this->controller . '/' . $action : $action; + return Yii::$app->controller->createUrl($route, $params); } }