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设计模式 注册表模式
Feb 05 PHP
深入phpMyAdmin的安装与配置的详细步骤
May 07 PHP
基于PHP CURL获取邮箱地址的详解
Jun 03 PHP
PHP整数取余返回负数的相关解决方法
May 15 PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
Jul 01 PHP
php上传文件并显示上传进度的方法
Mar 24 PHP
php上传功能集后缀名判断和随机命名(强力推荐)
Sep 10 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
Oct 17 PHP
php遍历替换目录下文件指定内容的方法
Nov 10 PHP
记录一次排查PHP脚本执行卡住的问题
Dec 27 PHP
laravel5.6实现数值转换
Oct 23 PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
Feb 26 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
在JavaScript中调用php程序
2009/03/09 PHP
php学习笔记 数组遍历实现代码
2011/06/09 PHP
php array的学习笔记
2012/05/16 PHP
浅谈PHP变量作用域以及地址引用问题
2013/12/27 PHP
PHP jQuery+Ajax结合写批量删除功能
2017/05/19 PHP
浅析JavaScript中的类型和对象
2013/11/29 Javascript
JavaScript动态创建link标签到head里的方法
2014/12/22 Javascript
使用VS开发 Node.js指南
2015/01/06 Javascript
基于JS实现9种不同的面包屑和分布式多步骤导航效果
2017/02/21 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
vue几个常用跨域处理方式介绍
2018/02/07 Javascript
微信小程序仿微信运动步数排行(交互)
2018/07/13 Javascript
vue组件实践之可搜索下拉框功能
2018/11/25 Javascript
读懂CommonJS的模块加载
2019/04/19 Javascript
JS sort方法基于数组对象属性值排序
2020/07/10 Javascript
JS实现按比例缩小图片宽高
2020/08/24 Javascript
vue实现抽屉弹窗效果
2020/11/15 Javascript
Python实现线程池代码分享
2015/06/21 Python
浅谈机器学习需要的了解的十大算法
2017/12/15 Python
python爬虫之urllib库常用方法用法总结大全
2018/11/14 Python
Python实现获取汉字偏旁部首的方法示例【测试可用】
2018/12/18 Python
详解Python 函数如何重载?
2019/04/23 Python
Python的log日志功能及设置方法
2019/07/11 Python
使用pyshp包进行shapefile文件修改的例子
2019/12/06 Python
使用Python将图片转正方形的两种方法实例代码详解
2020/04/29 Python
澳大利亚家具和家居用品购物网站:Zanui
2018/12/29 全球购物
亚洲颇具影响力的男性在线购物零售商:His
2019/11/24 全球购物
德国家具、照明、家居用品网上商店:Wayfair.de
2020/02/13 全球购物
英国时尚和家居用品零售商:Matalan
2021/02/28 全球购物
ORACLE十问
2015/04/20 面试题
会计大学生职业生涯规划书范文
2014/01/13 职场文书
取保候审保证书
2014/04/30 职场文书
鸡毛信观后感
2015/06/11 职场文书
西游记读书笔记
2015/06/25 职场文书
python学习之panda数据分析核心支持库
2021/05/07 Python
前端监听websocket消息并实时弹出(实例代码)
2021/11/27 Javascript