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中文字符截取防乱码
Mar 28 PHP
坏狼的PHP学习教程之第2天
Jun 15 PHP
怎样去阅读一份php源代码
Aug 21 PHP
基于PHP的cURL快速入门教程 (小偷采集程序)
Jun 02 PHP
不重新编译PHP为php增加openssl模块的方法
Jun 14 PHP
php Ubb代码编辑器函数代码
Jul 05 PHP
PHP类的封装与继承详解
Sep 29 PHP
thinkPHP使用post方式查询时分页失效的解决方法
Dec 09 PHP
JSON两种结构之对象和数组的理解
Jul 19 PHP
PHP集成环境XAMPP的安装与配置
Nov 13 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
Jun 03 PHP
php实现的数组转xml案例分析
Sep 28 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 实例化类的一点摘记
2008/03/23 PHP
PHP实现多图片上传类实例
2014/07/26 PHP
PHP设计模式之工厂方法设计模式实例分析
2018/04/25 PHP
PHP的JSON封装、转变及输出操作示例
2019/09/27 PHP
laravel 解决paginate查询多个字段报错的问题
2019/10/22 PHP
在JavaScript中,为什么要尽可能使用局部变量?
2009/04/06 Javascript
获取offsetTop和offsetLeft值的js代码(兼容)
2013/04/16 Javascript
javascript打印html内容功能的方法示例
2013/11/28 Javascript
初步了解javascript面向对象
2015/11/09 Javascript
JavaScript遍历求解数独问题的主要思路小结
2016/06/12 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
JS封装的三级联动菜单(使用时只需要一行js代码)
2016/10/24 Javascript
bootstrap daterangepicker汉化以及扩展功能
2017/06/15 Javascript
JavaScript定义函数_动力节点Java学院整理
2017/06/27 Javascript
jquery+css3实现熊猫tv导航代码分享
2018/02/12 jQuery
javascript数组去重方法总结(推荐)
2019/03/20 Javascript
使用taro开发微信小程序遇到的坑总结
2019/04/08 Javascript
webpack4 SplitChunks实现代码分隔详解
2019/05/23 Javascript
js微信分享接口调用详解
2019/07/23 Javascript
JavaScript中的函数申明、函数表达式、箭头函数
2019/12/06 Javascript
python logging类库使用例子
2014/11/22 Python
Python单例模式的两种实现方法
2017/08/14 Python
python爬虫爬取微博评论案例详解
2019/03/27 Python
Python小程序 控制鼠标循环点击代码实例
2019/10/08 Python
TensorFlow tf.nn.conv2d实现卷积的方式
2020/01/03 Python
用什么库写 Python 命令行程序(示例代码详解)
2020/02/20 Python
使用Python和百度语音识别生成视频字幕的实现
2020/04/09 Python
Python3交互式shell ipython3安装及使用详解
2020/07/11 Python
Fossil加拿大官网:化石手表、手袋、首饰及配饰
2019/04/23 全球购物
幼教毕业生自我鉴定
2014/01/12 职场文书
西式结婚主持词
2014/03/14 职场文书
年终总结会议主持词
2014/03/17 职场文书
工程力学专业自荐信范文
2014/03/17 职场文书
做一个有道德的人活动方案
2014/08/25 职场文书
道士塔读书笔记
2015/06/30 职场文书
vue实现简易音乐播放器
2022/08/14 Vue.js