Zend Framework动作助手Url用法详解


Posted in PHP onMarch 05, 2016

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

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)
<?php
class IndexController extends Zend_Controller_Action
{
  public function init()
  {
    /* Initialize action controller here */
  }
  public function indexAction()
  {
    //$urlParser = $this->_helper->getHelper('UrlParser');
    //var_dump($urlParser->parse('https://3water.com/article/80479.htm'));
    $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);
  }
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP垃圾回收机制简单说明
Jul 22 PHP
Look And Say 序列php实现代码
May 22 PHP
linux下使用ThinkPHP需要注意大小写导致的问题
Aug 02 PHP
PHP使用DOMDocument类生成HTML实例(包含常见标签元素)
Jun 25 PHP
PHP获取QQ达人QQ信息的方法
Mar 05 PHP
Symfony2之session与cookie用法小结
Mar 18 PHP
php格式化时间戳
Dec 17 PHP
Yii2表单事件之Ajax提交实现方法
May 04 PHP
thinkphp实现附件上传功能
May 26 PHP
用php+ajax新建流程(请假、进货、出货等)
Jun 11 PHP
PHP十六进制颜色随机生成器功能示例
Jul 24 PHP
PHP sdk实现在线打包代码示例
Dec 09 PHP
Zend Framework动作助手Json用法实例分析
Mar 05 #PHP
Zend Framework动作助手FlashMessenger用法详解
Mar 05 #PHP
Zend Framework创建自己的动作助手详解
Mar 05 #PHP
Zend Framework动作助手(Zend_Controller_Action_Helper)用法详解
Mar 05 #PHP
Zend Framework实现Zend_View集成Smarty模板系统的方法
Mar 05 #PHP
Zend Framework教程之视图组件Zend_View用法详解
Mar 05 #PHP
Zend Framework教程之模型Model用法简单实例
Mar 04 #PHP
You might like
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
2016/05/11 PHP
php Session无效分析资料整理
2016/11/29 PHP
PHP 中常量的知识整理
2017/04/14 PHP
PHP正则判断一个变量是否为正整数的方法
2019/02/27 PHP
Javascript笔记一 js以及json基础使用说明
2010/05/22 Javascript
jquery触发a标签跳转事件示例代码
2013/07/21 Javascript
Javascript 浮点运算的问题分析与解决方法
2013/08/27 Javascript
jQuery经过一段时间自动隐藏指定元素的方法
2015/03/17 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
2016/12/16 Javascript
详解Vue整合axios的实例代码
2017/06/21 Javascript
关于在vue-cli中使用微信自动登录和分享的实例
2017/06/22 Javascript
关于jquery中attr()和prop()方法的区别
2018/05/28 jQuery
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
2018/05/28 Javascript
在vue中使用SockJS实现webSocket通信的过程
2018/08/29 Javascript
解决vue attr取不到属性值的问题
2018/09/18 Javascript
jQuery实现带3D切割效果的轮播图功能示例【附源码下载】
2019/04/04 jQuery
JS计算斐波拉切代码实例
2019/09/12 Javascript
[48:02]Ti4循环赛第三日 VG vs Liquid和NEWBEE vs DK
2014/07/12 DOTA
在Python中操作字典之clear()方法的使用
2015/05/21 Python
python spyder中读取txt为图片的方法
2018/04/27 Python
Flask-Mail用法实例分析
2018/07/21 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
2019/02/26 Python
详解Django项目中模板标签及模板的继承与引用(网站中快速布置广告)
2019/03/27 Python
浅析python 字典嵌套
2020/09/29 Python
PyCharm2020.3.2安装超详细教程
2021/02/08 Python
美国最大的家庭鞋类零售商之一:Shoe Carnival
2017/10/06 全球购物
Sneaker Studio罗马尼亚网站:购买运动鞋
2018/11/04 全球购物
Napapijri西班牙在线商店:夹克、外套、运动衫等
2020/11/05 全球购物
毕业生个人求职信范例分享
2013/12/17 职场文书
冰淇淋店的创业计划书
2014/02/07 职场文书
大学生村官演讲稿
2014/04/25 职场文书
化工工艺设计求职信
2014/06/25 职场文书
2015年除四害工作总结
2015/07/23 职场文书
Go语言实现一个简单的并发聊天室的项目实战
2022/03/18 Golang
Window server 2012 R2 AD域的组策略相关设置
2022/04/28 Servers
Python循环之while无限迭代
2022/04/30 Python