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中使用Oracle数据库(1)
Oct 09 PHP
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
Aug 12 PHP
基于Zend的Captcha机制的应用
May 02 PHP
通过table标签,PHP输出EXCEL的实现方法
Jul 24 PHP
CI框架自动加载session出现报错的解决办法
Jun 17 PHP
PHP中使用TCPDF生成PDF文档实例
Jul 01 PHP
PHP函数eval()介绍和使用示例
Aug 20 PHP
汇总PHPmailer群发Gmail的常见问题
Feb 24 PHP
PHP更安全的密码加密机制Bcrypt详解
Jun 18 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
Jun 20 PHP
php数组指针函数功能及用法示例
Feb 11 PHP
Linux系统下安装PHP7.3版本
Jun 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
php中读写文件与读写数据库的效率比较分享
2013/10/19 PHP
php session的锁和并发
2016/01/22 PHP
yii2 开发api接口时优雅的处理全局异常的方法
2019/05/14 PHP
PHP数组与字符串互相转换实例
2020/05/05 PHP
JS setCapture 区域外事件捕捉
2010/03/18 Javascript
单独使用CKFinder选择图片的方法
2010/08/21 Javascript
JS字符串函数扩展代码
2011/09/13 Javascript
基于jquery跨浏览器显示的file上传控件
2011/10/24 Javascript
javascript学习基础笔记之DOM对象操作
2011/11/03 Javascript
angularJS提交表单(form)
2015/02/09 Javascript
详解jQuery的Cookie插件
2016/11/23 Javascript
webpack学习--webpack经典7分钟入门教程
2017/06/28 Javascript
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
2018/08/29 Javascript
webpack打包多页面的方法
2018/11/30 Javascript
JS使用队列对数组排列,基数排序算法示例
2019/03/02 Javascript
Android 自定义view仿微信相机单击拍照长按录视频按钮
2019/07/19 Javascript
Centos7 安装Node.js10以上版本的方法步骤
2019/10/15 Javascript
vue实现导航菜单和编辑文本的示例代码
2020/07/04 Javascript
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
python获取文件版本信息、公司名和产品名的方法
2014/10/05 Python
Python的collections模块中namedtuple结构使用示例
2016/07/07 Python
Python实现将数据框数据写入mongodb及mysql数据库的方法
2018/04/02 Python
python将四元数变换为旋转矩阵的实例
2019/12/04 Python
window环境pip切换国内源(pip安装异常缓慢的问题)
2019/12/31 Python
Python连接mysql数据库及简单增删改查操作示例代码
2020/08/03 Python
基于Python的一个自动录入表格的小程序
2020/08/05 Python
python实现xml转json文件的示例代码
2020/12/30 Python
CSS3用@font-face实现自定义英文字体
2013/09/23 HTML / CSS
澳大利亚领先的在线美容商店:Facial Co
2017/10/22 全球购物
瑞典的玛丽小姐:Miss Mary of Sweden
2019/02/13 全球购物
自荐信模版
2013/10/24 职场文书
高中数学教学反思
2014/01/30 职场文书
面试后的感谢信范文
2014/02/01 职场文书
服务整改报告
2014/11/06 职场文书
实习工作表现评语
2014/12/31 职场文书
Golang中channel的原理解读(推荐)
2021/10/16 Golang