From a8bfe083752530bcece0b7ff04de2a30f807396e Mon Sep 17 00:00:00 2001 From: Timokhin Maxim Date: Sat, 4 May 2013 13:54:14 +0700 Subject: [PATCH] Array in url param Supporting syntax like this: {link text="test" url=['action', 'id'=>$someid]} --- plugins/function.link.php | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/plugins/function.link.php b/plugins/function.link.php index b41cb43..0279200 100644 --- a/plugins/function.link.php +++ b/plugins/function.link.php @@ -7,6 +7,7 @@ * {link text="test" url="controller/action?param=value"} * {link text="test" url="/absolute/url"} * {link text="test" url="http://host/absolute/url"} + * {link text="test" url=['action', 'id'=>$someid]} * * @see CHtml::link(). * @@ -24,18 +25,23 @@ function smarty_function_link($params, &$smarty){ $url = ''; if(!empty($params['url'])){ - $parts = parse_url($params['url']); - if(!isset($parts['host']) && $parts['path'][1]!='/'){ - $par = array(); - parse_str($parts['query'], $par); - $url = array_merge( - array($parts['path']), - $par - ); + if (is_array($params['url'])) { + $url = $params['url']; } else { - $url = $params['url']; - } + $parts = parse_url($params['url']); + if(!isset($parts['host']) && $parts['path'][1]!='/'){ + $par = array(); + parse_str($parts['query'], $par); + $url = array_merge( + array($parts['path']), + $par + ); + } + else { + $url = $params['url']; + } + } } return CHtml::link($text, $url, $options);