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 相关文章推荐
图书管理程序(三)
Oct 09 PHP
Http 1.1 Etag 与 Last-Modified提高php效率
Jan 10 PHP
PHP mkdir()定义和用法
Jan 14 PHP
PHP 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
Jun 07 PHP
非常实用的php弹出错误警告函数扩展性强
Jan 17 PHP
部署PHP时的4个配置修改说明
Oct 19 PHP
php二维码生成
Oct 19 PHP
php设计模式之单例模式代码
Jun 11 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
Dec 19 PHP
PHP使用xpath解析XML的方法详解
May 20 PHP
php依赖注入知识点详解
Sep 23 PHP
TP5框架实现上传多张图片的方法分析
Mar 29 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在网页中动态生成PDF文件详细教程
2014/07/05 PHP
通过php删除xml文档内容的方法
2015/01/23 PHP
thinkPHP中验证码的简单使用方法
2015/12/26 PHP
PHP两种实现无级递归分类的方法
2017/03/02 PHP
Array.prototype.slice 使用扩展
2010/06/09 Javascript
javascript匿名函数实例分析
2014/11/18 Javascript
jQuery使用append在html元素后同时添加多项内容的方法
2015/03/26 Javascript
javascript实现无缝上下滚动特效
2015/12/16 Javascript
使用jQuery判断Div是否在可视区域的方法 判断div是否可见
2016/02/17 Javascript
简介BootStrap model弹出框的使用
2016/04/27 Javascript
VC调用javascript的几种方法(推荐)
2016/08/09 Javascript
深入理解Angular.JS中的Scope继承
2017/06/04 Javascript
使用JS实现图片轮播的实例(前后首尾相接)
2017/09/21 Javascript
基于jQuery的时间戳与日期间的转化
2019/06/21 jQuery
搭建一个nodejs脚手架的方法步骤
2019/06/28 NodeJs
微信小程序class封装http代码实例
2019/08/24 Javascript
原生JavaScript实现购物车
2021/01/10 Javascript
[48:45]Ti4 循环赛第二日 NEWBEE vs EG
2014/07/11 DOTA
使用python检测主机存活端口及检查存活主机
2015/10/12 Python
详解Python的Twisted框架中reactor事件管理器的用法
2016/05/25 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
2018/05/04 Python
在Python中实现shuffle给列表洗牌
2018/11/08 Python
Python爬虫实现“盗取”微信好友信息的方法分析
2019/09/16 Python
基于Python词云分析政府工作报告关键词
2020/06/02 Python
实例讲解CSS3中的border-radius属性
2015/08/18 HTML / CSS
介绍Java的内部类
2012/10/27 面试题
Internet体系结构
2014/12/21 面试题
计算机系毕业生推荐信
2013/11/06 职场文书
青年创业培训欢迎词
2014/01/08 职场文书
毕业实习评语
2014/02/10 职场文书
金融学专科生自我鉴定
2014/02/21 职场文书
2014年教师节寄语
2014/04/03 职场文书
高中生第一学年自我鉴定
2014/09/12 职场文书
民主评议政风行风活动心得体会
2014/10/29 职场文书
如何在pycharm中快捷安装pip命令(如pygame)
2021/05/31 Python
Java图书管理系统,课程设计必用(源码+文档)
2021/06/30 Java/Android