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中取得image按钮传递的name值
Oct 09 PHP
坏狼的PHP学习教程之第1天
Jun 15 PHP
php 一元分词算法
Nov 30 PHP
hadoop常见错误以及处理方法详解
Jun 19 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
Jun 23 PHP
php在apache环境下实现gzip配置方法
Apr 02 PHP
php socket通信(tcp/udp)实例分析
Feb 14 PHP
PHP获取客户端及服务器端IP的封装类
Jul 21 PHP
php实现URL加密解密的方法
Nov 17 PHP
浅谈PHP错误类型及屏蔽方法
May 27 PHP
php实现保存周期为1天的购物车类
Jul 07 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
Mar 18 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的array_multisort()使用方法介绍
2012/05/16 PHP
解析php中两种缩放图片的函数,为图片添加水印
2013/06/14 PHP
PHP独立Session数据库存储操作类分享
2014/06/11 PHP
MAC下通过改apache配置文件切换php多版本的方法
2017/04/26 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
2019/10/21 PHP
JS代码格式化和语法着色V2
2006/10/14 Javascript
新浪的图片新闻效果
2007/01/13 Javascript
在IE上直接编辑网页内容的js代码(IE地址栏js)
2009/04/27 Javascript
细说浏览器特性检测(2)-通用事件检测
2010/11/05 Javascript
关于jquery append() html时的小问题的解决方法
2010/12/16 Javascript
JavaScript对象之间的转换 jQuery对象和原声DOM
2011/03/07 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
2013/08/08 Javascript
JS控制一个DIV层在指定时间内消失的方法
2014/02/17 Javascript
file控件选择上传文件确定后触发的js事件是哪个
2014/03/17 Javascript
jquery中checkbox全选失效的解决方法
2014/12/26 Javascript
JavaScript中的继承之类继承
2016/05/01 Javascript
js实现浏览器倒计时跳转页面效果
2016/08/12 Javascript
浅谈jquery.form.js的ajaxSubmit和ajaxForm的使用
2016/09/09 Javascript
jQuery UI仿淘宝搜索下拉列表功能
2017/01/10 Javascript
js使用原型对象(prototype)需要注意的地方
2017/08/28 Javascript
vue 项目常用加载器及配置详解
2018/01/22 Javascript
js隐式转换的知识实例讲解
2018/09/28 Javascript
JavaScript JMap类定义与使用方法示例
2019/01/22 Javascript
微信小程序利用Canvas绘制图片和竖排文字详解
2019/06/25 Javascript
jQuery删除/清空指定元素的所有子节点实例代码
2019/07/04 jQuery
layui 地区三级联动 form select 渲染的实例
2019/09/27 Javascript
[54:27]TNC vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python3中函数参数的四种简单用法
2018/07/09 Python
Python使用sqlalchemy模块连接数据库操作示例
2019/03/13 Python
让你Python到很爽的加速递归函数的装饰器
2019/05/26 Python
Pycharm中安装wordcloud等库失败问题及终端通过pip安装的Python库如何添加到Pycharm解释器中(推荐)
2020/05/10 Python
借助HTML5 Canvas API制作一个简单的猜字游戏
2016/03/25 HTML / CSS
考博专家推荐信模板
2013/12/02 职场文书
大学生学习党课思想汇报
2014/01/03 职场文书
应届生自荐信范文
2014/02/21 职场文书
2015年暑假生活总结
2015/07/13 职场文书