当前位置:首页 > CMS教程 > 其它CMS > 列表

Zend Framework动作助手Url用法详解

发布:smiling 来源: PHP粉丝网  添加日期:2021-07-13 14:45:31 浏览: 评论:0 

这篇文章主要介绍了Zend Framework动作助手Url用法,结合实例形式分析了动作助手Url的功能,定义与相关使用技巧,需要的朋友可以参考下。

本文实例讲述了Zend Framework动作助手Url用法,分享给大家供大家参考,具体如下:

Url主要用于创建url;

  1. public function simple($action$controller = null, $module = null, array $params = null) 
  2. public function url($urlOptions = array(), $name = null, $reset = false, $encode = true) 
  3. public function direct($action$controller = null, $module = null, array $params = null) 
  4.  
  5. <?php 
  6. class IndexController extends Zend_Controller_Action 
  7.   public function init() 
  8.   { 
  9.     /* Initialize action controller here */ 
  10.   } 
  11.   public function indexAction() 
  12.   { 
  13.     //$urlParser = $this->_helper->getHelper('UrlParser'); 
  14.     //var_dump($urlParser->parse('https://www.jb51.net/article/80479.htm')); 
  15.     $url = $this->_helper->getHelper('Url'); 
  16.     $action = 'actionname'
  17.     $controller = 'controllername'
  18.     $module = 'modulename'
  19.     $params = array('param1'=>'中文参数'); 
  20.     var_dump($url->simple($action$controller$module$params)); 
  21.     $urlOptions = array
  22.         'action'=>$action
  23.         'controller'=>$controller
  24.         'module'=>$module
  25.         'params'=>$params); 
  26.     var_dump($url->url($urlOptions)); 
  27.     var_dump($url->direct($action$controller$module$params)); 
  28.     exit
  29.   } 
  30. www.phpfensi.com/helper_demo1/public/index 
  31.  
  32. string(101) "/helper_demo1/public/modulename/controllername/actionname/param1/%E4%B8%AD%E6%96%87%E5%8F%82%E6%95%B0" 
  33. string(101) "/helper_demo1/public/modulename/controllername/actionname/params/%E4%B8%AD%E6%96%87%E5%8F%82%E6%95%B0" 
  34. string(101) "/helper_demo1/public/modulename/controllername/actionname/param1/%E4%B8%AD%E6%96%87%E5%8F%82%E6%95%B0" 

实现源码如下:

  1. /** 
  2.  * @see Zend_Controller_Action_Helper_Abstract 
  3.  */ 
  4. require_once 'Zend/Controller/Action/Helper/Abstract.php'
  5. /** 
  6.  * Helper for creating URLs for redirects and other tasks 
  7.  * 
  8.  * @uses    Zend_Controller_Action_Helper_Abstract 
  9.  * @category  Zend 
  10.  * @package  Zend_Controller 
  11.  * @subpackage Zend_Controller_Action_Helper 
  12.  * @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com) 
  13.  * @license  http://framework.zend.com/license/new-bsd   New BSD License 
  14.  */ 
  15. class Zend_Controller_Action_Helper_Url extends Zend_Controller_Action_Helper_Abstract 
  16.   /** 
  17.    * Create URL based on default route 
  18.    * 
  19.    * @param string $action 
  20.    * @param string $controller 
  21.    * @param string $module 
  22.    * @param array $params 
  23.    * @return string 
  24.    */ 
  25.   public function simple($action$controller = null, $module = null, array $params = null) 
  26.   { 
  27.     $request = $this->getRequest(); 
  28.     if (null === $controller) { 
  29.       $controller = $request->getControllerName(); 
  30.     } 
  31.     if (null === $module) { 
  32.       $module = $request->getModuleName(); 
  33.     } 
  34.     $url = $controller . '/' . $action
  35.     if ($module != $this->getFrontController()->getDispatcher()->getDefaultModule()) { 
  36.       $url = $module . '/' . $url
  37.     } 
  38.     if ('' !== ($baseUrl = $this->getFrontController()->getBaseUrl())) { 
  39.       $url = $baseUrl . '/' . $url
  40.     } 
  41.     if (null !== $params) { 
  42.       $paramPairs = array(); 
  43.       foreach ($params as $key => $value) { 
  44.         $paramPairs[] = urlencode($key) . '/' . urlencode($value); 
  45.       } 
  46.       $paramString = implode('/'$paramPairs); 
  47.       $url .= '/' . $paramString
  48.     } 
  49.     $url = '/' . ltrim($url'/'); 
  50.     return $url
  51.   } 
  52.   /** 
  53.    * Assembles a URL based on a given route 
  54.    * 
  55.    * This method will typically be used for more complex operations, as it 
  56.    * ties into the route objects registered with the router. 
  57.    * 
  58.    * @param array  $urlOptions Options passed to the assemble method of the Route object. 
  59.    * @param mixed  $name    The name of a Route to use. If null it will use the current Route 
  60.    * @param boolean $reset 
  61.    * @param boolean $encode 
  62.    * @return string Url for the link href attribute. 
  63.    */ 
  64.   public function url($urlOptions = array(), $name = null, $reset = false, $encode = true) 
  65.   { 
  66.     $router = $this->getFrontController()->getRouter(); 
  67.     return $router->assemble($urlOptions$name$reset$encode); 
  68.   } 
  69.   /** 
  70.    * Perform helper when called as $this->_helper->url() from an action controller 
  71.    * 
  72.    * Proxies to {@link simple()} 
  73.    * 
  74.    * @param string $action 
  75.    * @param string $controller 
  76.    * @param string $module 
  77.    * @param array $params 
  78.    * @return string 
  79.    */ 
  80.   public function direct($action$controller = null, $module = null, array $params = null) 
  81.   { 
  82.     return $this->simple($action$controller$module$params); 
  83.   } 
  84. }

Tags: Framework动作助手 Url

分享到: