SmartyでAgaviRouting::genをする
mojaviのころからgenUrlするためのプラグインを作っていましたが、0.11用にプラグインを書きました。
ライセンスはLGPLで。ただしコメントくれたらNYSL*1で。
<?php /** * Smarty plugin for AgaviRouting::gen * * [parameters] * route a route name. * params_XXX a parameter, key of which is XXX. * options_XXX a option, key of which is XXX. * options the name of an options preset. * assign a name for assign key.(option) * routing a key of template valiable for AgaviRouting object * [example] * {routing_gen route="some.route.name" * params_parameter1="value_for_p1" params_parameter2="value_for_p2" * options_option1="value_for_o1" options_option2="value_for_o2"} * * @author MugeSo <mugeso@mugeso.com> */ function smarty_function_routing_gen($args, $smarty) { if(empty($args['route'])) { $smarty->trriger_error("routing_gen: parameter 'route' is required."); return; } $params = array(); $options = array(); foreach($args AS $key=>$value) { if(preg_match('/(params|options)_(.+)/', $key, $matches)) { ${$matches[1]}[$matches[2]] = $value; } } if(isset($args['options'])) { $options = $args['options']; } $url = $smarty->get_template_vars(isset($args['routing']) ? $args['routing'] : 'ro') ->gen($args['route'], $params, $options); if(empty($args['assign'])) { return $url; } else { $smarty->assign($args['assign'], $url); } } ?>