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&amp;&amp;mysql)一
Oct 09 PHP
深入Nginx + PHP 缓存详解
Jul 11 PHP
php导出excel格式数据问题
Mar 11 PHP
php警告Creating default object from empty value 问题的解决方法
Apr 02 PHP
thinkphp获取栏目和文章当前位置的方法
Oct 29 PHP
用 Composer构建自己的 PHP 框架之构建路由
Oct 30 PHP
php获取指定日期之间的各个周和月的起止时间
Nov 24 PHP
php开发微信支付获取用户地址
Oct 04 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
Feb 14 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
May 20 PHP
php解析mht文件转换成html的实例
Mar 13 PHP
PHP接入支付宝接口失效流程详解
Nov 10 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开启安全模式后禁用的函数集合
2011/06/26 PHP
PHP中防止SQL注入方法详解
2014/12/25 PHP
Ubuntu12下编译安装PHP5.3开发环境
2015/03/27 PHP
JQuery Ajax 跨域访问的解决方案
2010/03/12 Javascript
JavaScript NodeTree导航栏(菜单项JSON类型/自制)
2013/02/01 Javascript
Extjs中ComboBoxTree实现的下拉框树效果(自写)
2013/05/28 Javascript
jquery获取被勾选的checked(选中)的那一行的3列和4列的值
2013/07/04 Javascript
jQuery设置div一直在页面顶部显示的方法
2013/10/24 Javascript
javascript实现百度地图鼠标滑动事件显示、隐藏
2015/04/02 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
2016/05/20 Javascript
AngularJS入门教程之MVC架构实例分析
2016/11/01 Javascript
JS实现商品筛选功能
2020/08/19 Javascript
vue-resource调用promise取数据方式详解
2017/07/21 Javascript
Vue v2.5 调整和更新不完全问题
2017/10/24 Javascript
jQuery实现表单动态加减、ajax表单提交功能
2018/06/08 jQuery
vuejs 制作背景淡入淡出切换动画的实例
2018/09/01 Javascript
中级前端工程师必须要掌握的27个JavaScript 技巧(干货总结)
2019/09/23 Javascript
JS Generator 函数的含义与用法实例总结
2020/04/08 Javascript
JQuery省市联动效果实现过程详解
2020/05/08 jQuery
DWR内存兼容及无法调用问题解决方案
2020/10/16 Javascript
python删除列表中重复记录的方法
2015/04/28 Python
ubuntu中配置pyqt4环境教程
2017/12/27 Python
transform python环境快速配置方法
2018/09/27 Python
python tools实现视频的每一帧提取并保存
2020/03/20 Python
Python OpenCV中的resize()函数的使用
2019/06/20 Python
Django 通过JS实现ajax过程详解
2019/07/30 Python
python之MSE、MAE、RMSE的使用
2020/02/24 Python
python标准库OS模块详解
2020/03/10 Python
Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例
2020/03/18 Python
关于webview适配H5上传照片或者视频文件的方法
2020/11/04 HTML / CSS
What's the difference between Debug and Trace class? (Debug类与Trace类有什么区别)
2013/09/10 面试题
Java中的基本数据类型所占存储空间大小固定的吗
2012/02/15 面试题
会计顶岗实习心得
2014/01/25 职场文书
接待员岗位职责
2015/02/13 职场文书
房屋所有权证明
2015/06/19 职场文书
如何正确理解python装饰器
2021/06/15 Python