国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php框架 > ZendFramework > Zend Framework教程-Zend_Helpers-动作助手-Url

Zend Framework教程-Zend_Helpers-动作助手-Url

来源:程序员人生   发布时间:2014-03-31 16:05:46 阅读次数:4017次
Url主要用于创建url;
public function simple($action, $controller = null, $module = null, array $params = null)
public function url($urlOptions = array(), $name = null, $reset = false, $encode = true)
public function direct($action, $controller = null, $module = null, array $params = null)




<?phpclass IndexController extends Zend_Controller_Action{    public function init()    {        /* Initialize action controller here */    }    public function indexAction()    {        //$urlParser = $this->_helper->getHelper('UrlParser'); 		//var_dump($urlParser->parse('http://blog.csdn.net/mengxiangbaidu/article/details/7236249')); 		    	$url = $this->_helper->getHelper('Url');    	    	$action = 'actionname';    	$controller = 'controllername';    	$module = 'modulename';    	$params = array('param1'=>'中文参数');    	var_dump($url->simple($action, $controller, $module, $params));    	    	$urlOptions = array(    			'action'=>$action,    			'controller'=>$controller,    			'module'=>$module,    			'params'=>$params);    	var_dump($url->url($urlOptions));    	var_dump($url->direct($action, $controller, $module, $params));    	     	exit;    }}






www.localzend.com/helper_demo1/public/index


string(101) "/helper_demo1/public/modulename/controllername/actionname/param1/%E4%B8%AD%E6%96%87%E5%8F%82%E6%95%B0"
string(101) "/helper_demo1/public/modulename/controllername/actionname/params/%E4%B8%AD%E6%96%87%E5%8F%82%E6%95%B0"
string(101) "/helper_demo1/public/modulename/controllername/actionname/param1/%E4%B8%AD%E6%96%87%E5%8F%82%E6%95%B0"
实现源码如下:

/** * @see Zend_Controller_Action_Helper_Abstract */require_once 'Zend/Controller/Action/Helper/Abstract.php';/** * Helper for creating URLs for redirects and other tasks * * @uses       Zend_Controller_Action_Helper_Abstract * @category   Zend * @package    Zend_Controller * @subpackage Zend_Controller_Action_Helper * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com) * @license    http://framework.zend.com/license/new-bsd     New BSD License */class Zend_Controller_Action_Helper_Url extends Zend_Controller_Action_Helper_Abstract{    /**     * Create URL based on default route     *     * @param  string $action     * @param  string $controller     * @param  string $module     * @param  array  $params     * @return string     */    public function simple($action, $controller = null, $module = null, array $params = null)    {        $request = $this->getRequest();        if (null === $controller) {            $controller = $request->getControllerName();        }        if (null === $module) {            $module = $request->getModuleName();        }        $url = $controller . '/' . $action;        if ($module != $this->getFrontController()->getDispatcher()->getDefaultModule()) {            $url = $module . '/' . $url;        }        if ('' !== ($baseUrl = $this->getFrontController()->getBaseUrl())) {            $url = $baseUrl . '/' . $url;        }        if (null !== $params) {            $paramPairs = array();            foreach ($params as $key => $value) {                $paramPairs[] = urlencode($key) . '/' . urlencode($value);            }            $paramString = implode('/', $paramPairs);            $url .= '/' . $paramString;        }        $url = '/' . ltrim($url, '/');        return $url;    }    /**     * Assembles a URL based on a given route     *     * This method will typically be used for more complex operations, as it     * ties into the route objects registered with the router.     *     * @param  array   $urlOptions Options passed to the assemble method of the Route object.     * @param  mixed   $name       The name of a Route to use. If null it will use the current Route     * @param  boolean $reset     * @param  boolean $encode     * @return string Url for the link href attribute.     */    public function url($urlOptions = array(), $name = null, $reset = false, $encode = true)    {        $router = $this->getFrontController()->getRouter();        return $router->assemble($urlOptions, $name, $reset, $encode);    }    /**     * Perform helper when called as $this->_helper->url() from an action controller     *     * Proxies to {@link simple()}     *     * @param  string $action     * @param  string $controller     * @param  string $module     * @param  array  $params     * @return string     */    public function direct($action, $controller = null, $module = null, array $params = null)    {        return $this->simple($action, $controller, $module, $params);    }}



生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生