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带密码功能并下载远程文件保存本地指定目录 修改加强版
May 16 PHP
适用于php-5.2 的 php.ini 中文版[金步国翻译]
Apr 17 PHP
PHP设置一边执行一边输出结果的代码
Sep 30 PHP
php查找任何页面上的所有链接的方法
Dec 03 PHP
thinkphp的CURD和查询方式介绍
Dec 19 PHP
yii框架通过控制台命令创建定时任务示例
Apr 30 PHP
php打印一个边长为N的实心和空心菱型的方法
Mar 02 PHP
详谈PHP编码转换问题
Jul 28 PHP
php获取远程图片并下载保存到本地的方法分析
Oct 08 PHP
基于thinkPHP类的插入数据库操作功能示例
Jan 06 PHP
laravel5使用freetds连接sql server的方法
Dec 07 PHP
PHP实现网站应用微信登录功能详解
Apr 11 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
对laravel in 查询的使用方法详解
2019/10/09 PHP
JavaScript表单验证开发
2016/11/23 Javascript
php输出全部gb2312编码内的汉字方法
2017/03/04 Javascript
jQuery Validate 相关参数及常用的自定义验证规则
2017/03/06 Javascript
requirejs + vue 项目搭建详解
2017/06/16 Javascript
利用js实现前后台传送Json的示例代码
2018/03/29 Javascript
React 路由懒加载的几种实现方案
2018/10/23 Javascript
微信小程序实现左右列表联动
2020/05/19 Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
2019/08/20 Javascript
JS实现水平移动与垂直移动动画
2019/12/19 Javascript
[26:50]2018完美盛典DOTA2表演赛
2018/12/17 DOTA
[01:14]DOTA2 7.22版本新增神杖效果展示(智力英雄篇)
2019/05/29 DOTA
[47:31]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.12
2020/12/16 DOTA
Python的面向对象思想分析
2015/01/14 Python
在Python中通过threading模块定义和调用线程的方法
2016/07/12 Python
Python2.7读取PDF文件的方法示例
2017/07/13 Python
Python 文件操作的详解及实例
2017/09/18 Python
python 编码规范整理
2018/05/05 Python
python中ASCII码和字符的转换方法
2018/07/09 Python
详解Python列表赋值复制深拷贝及5种浅拷贝
2019/05/15 Python
python使用ctypes调用扩展模块的实例方法
2020/01/28 Python
django列表筛选功能的实现代码
2020/03/27 Python
使用OpenCV校准鱼眼镜头的方法
2020/11/26 Python
HTML5 文件上传下载的实例代码
2017/07/03 HTML / CSS
有关HTML5页面在iPhoneX适配问题
2017/11/13 HTML / CSS
奥兰多迪士尼门票折扣:Undercover Tourist
2018/07/09 全球购物
打架检讨书100字
2014/01/08 职场文书
创先争优承诺书范文
2014/03/31 职场文书
员工激励培训演讲稿
2014/09/16 职场文书
学院党委班子四风问题自查报告及整改措施
2014/10/25 职场文书
2014年政工师工作总结
2014/12/18 职场文书
横店影视城导游词
2015/02/06 职场文书
兴趣班停课通知
2015/04/24 职场文书
Spring Cloud 中@FeignClient注解中的contextId属性详解
2021/09/25 Java/Android
如何更改Win11声音输出设备?Win11声音输出设备四种更改方法
2022/04/08 数码科技
使用compose函数优化代码提高可读性及扩展性
2022/06/16 Javascript