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 相关文章推荐
用cookies来跟踪识别用户
Oct 09 PHP
PHP写MySQL数据 实现代码
Jun 15 PHP
php 8小时时间差的解决方法小结
Dec 22 PHP
php获取数组中重复数据的两种方法
Jun 28 PHP
php获取$_POST同名参数数组的实现介绍
Jun 30 PHP
教你如何在CI框架中使用 .htaccess 隐藏url中index.php
Jun 09 PHP
腾讯微博提示missing parameter errorcode 102 错误的解决方法
Dec 22 PHP
php去除html标记的原生函数详解
Jan 27 PHP
PHP常用的排序和查找算法
Aug 06 PHP
通过PHP简单实例介绍文件上传
Dec 16 PHP
thinkPHP模板中函数的使用方法示例
Nov 30 PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
May 12 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/06/21 PHP
PHP基于Redis消息队列实现发布微博的方法
2017/05/03 PHP
ThinkPHP实现登录退出功能
2017/06/29 PHP
PHP基于递归算法解决兔子生兔子问题
2018/05/11 PHP
JSQL SQLProxy 的 php 版本代码
2010/05/05 Javascript
怎样在JavaScript里写一个swing把数据插入数据库
2012/12/10 Javascript
javaScript中定义类或对象的五种方式总结
2016/12/04 Javascript
JavaScript优化以及前段开发小技巧
2017/02/02 Javascript
深入理解ES7的async/await的用法
2017/09/09 Javascript
在JS循环中使用async/await的方法
2018/10/12 Javascript
移动端如何用下拉刷新的方式实现上拉加载
2018/12/10 Javascript
jQuery实现的3D版图片轮播示例【滑动轮播】
2019/01/18 jQuery
jQuery实现弹幕特效
2019/11/29 jQuery
Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】
2020/05/29 jQuery
javascript实现文字跑马灯效果
2020/06/18 Javascript
[51:17]Mski vs VGJ.S Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
Python语言描述随机梯度下降法
2018/01/04 Python
python绘制漏斗图步骤详解
2019/03/04 Python
python用win32gui遍历窗口并设置窗口位置的方法
2019/07/26 Python
Python 实现opencv所使用的图片格式与 base64 转换
2020/01/09 Python
Python简单实现词云图代码及步骤解析
2020/06/04 Python
Python函数参数定义及传递方式解析
2020/06/10 Python
python爬虫要用到的库总结
2020/07/28 Python
python查询MySQL将数据写入Excel
2020/10/29 Python
pycharm 使用anaconda为默认环境的操作
2021/02/05 Python
详解python日志输出使用配置文件格式
2021/02/10 Python
Html5 web本地存储实例详解
2016/07/28 HTML / CSS
Waterford加拿大官方网站:世界著名的水晶杯品牌
2016/11/01 全球购物
德国BA保镖药房韩文网:kr.ba.de
2017/09/04 全球购物
Bench加拿大官方网站:英国城市服装品牌
2017/11/03 全球购物
中专毕业生求职简历的自我评价
2013/10/21 职场文书
学校四风对照检查材料
2014/08/28 职场文书
2014年技术部工作总结
2014/12/12 职场文书
追悼会悼词大全
2015/06/23 职场文书
2016年教师节慰问信
2015/12/01 职场文书
详解GaussDB for MySQL性能优化
2021/05/18 MySQL