diff --git a/Utility/NetCommonsUrl.php b/Utility/NetCommonsUrl.php index e5fb113a..762244a1 100644 --- a/Utility/NetCommonsUrl.php +++ b/Utility/NetCommonsUrl.php @@ -97,30 +97,12 @@ public static function actionUrlAsArray($params = array(), $full = false) { if (!is_array($params)) { return $params; } - $request = Router::getRequest(true); - $url = array(); + $url = self::__getCommonAction($params); $query['?'] = null; - if (isset($params['plugin'])) { - $url['plugin'] = $params['plugin']; - unset($params['plugin']); - } elseif (is_object($request)) { - $url['plugin'] = $request->params['plugin']; - } elseif (Current::read('Plugin.key')) { - $url['plugin'] = Current::read('Plugin.key'); - } - if (isset($params['controller'])) { - $url['controller'] = $params['controller']; - unset($params['controller']); - } elseif (is_object($request)) { - $url['controller'] = $request->params['controller']; - } - if (isset($params['action'])) { - $url['action'] = $params['action']; - unset($params['action']); - } elseif (is_object($request)) { - $url['action'] = $request->params['action']; - } + $params = Hash::remove($params, 'plugin'); + $params = Hash::remove($params, 'controller'); + $params = Hash::remove($params, 'action'); if (isset($params['block_id'])) { $url[] = $params['block_id']; @@ -142,6 +124,37 @@ public static function actionUrlAsArray($params = array(), $full = false) { return Hash::merge($url, $query, $params); } +/** + * NetCommonsプラグインのアクションURL配列を生成 + * + * @param array $params Action url array + * @return array + */ + private static function __getCommonAction($params) { + $request = Router::getRequest(true); + + $url = array(); + if (isset($params['plugin'])) { + $url['plugin'] = $params['plugin']; + } elseif (is_object($request)) { + $url['plugin'] = $request->params['plugin']; + } elseif (Current::read('Plugin.key')) { + $url['plugin'] = Current::read('Plugin.key'); + } + if (isset($params['controller'])) { + $url['controller'] = $params['controller']; + } elseif (is_object($request)) { + $url['controller'] = $request->params['controller']; + } + if (isset($params['action'])) { + $url['action'] = $params['action']; + } elseif (is_object($request)) { + $url['action'] = $request->params['action']; + } + + return $url; + } + /** * ユーザのアクションURLを生成 * diff --git a/View/Helper/NetCommonsHtmlHelper.php b/View/Helper/NetCommonsHtmlHelper.php index 22beca01..f159a5d8 100644 --- a/View/Helper/NetCommonsHtmlHelper.php +++ b/View/Helper/NetCommonsHtmlHelper.php @@ -149,7 +149,7 @@ private function __getUrl($url = null, $options = array()) { } } - if (Hash::get($options, 'hasBlock', true)) { + if (! is_array($options) || Hash::get($options, 'hasBlock', true)) { $url = NetCommonsUrl::blockUrl($url); } else { $url = NetCommonsUrl::actionUrlAsArray($url);