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 相关文章推荐
提问的智慧
Oct 09 PHP
jq的get传参数在utf-8中乱码问题的解决php版
Jul 23 PHP
PHP 替换模板变量实现步骤
Aug 24 PHP
关于php fread()使用技巧
Jan 22 PHP
php数组函数序列 之array_count_values() 统计数组中所有值出现的次数函数
Oct 29 PHP
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
Jul 01 PHP
ThinkPHP应用模式扩展详解
Jul 16 PHP
PHP获取youku视频真实flv文件地址的方法
Dec 23 PHP
搭建自己的PHP MVC框架详解
Aug 16 PHP
PHP实现非阻塞模式的方法分析
Jul 26 PHP
Laravel框架自定义验证过程实例分析
Feb 01 PHP
使用laravel的migrate创建数据表的方法
Sep 30 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/07/10 PHP
PHP魔术方法__GET、__SET使用实例
2014/11/25 PHP
PHP防止图片盗用(盗链)的方法小结
2016/11/11 PHP
基于PHP实现堆排序原理及实例详解
2020/06/19 PHP
javascript Window及document对象详细整理
2011/01/12 Javascript
javascript学习笔记(十一) 正则表达式介绍
2012/06/20 Javascript
技术男用来对妹子表白的百度首页
2014/07/23 Javascript
EasyUi datagrid 实现表格分页
2015/02/10 Javascript
PHP守护进程实例
2015/03/06 Javascript
原生JS实现LOADING效果
2015/03/16 Javascript
谈谈JavaScript中的几种借用方法
2016/08/09 Javascript
C#实现将一个字符转换为整数
2017/12/12 Javascript
vue实现验证码按钮倒计时功能
2018/04/10 Javascript
ES6之模版字符串的具体使用
2018/05/17 Javascript
webpack4与babel配合使es6代码可运行于低版本浏览器的方法
2018/10/12 Javascript
Vue.js结合bootstrap前端实现分页和排序效果
2018/12/29 Javascript
基于layui table返回的值的多级嵌套的解决方法
2019/09/19 Javascript
Node对CommonJS的模块规范
2019/11/06 Javascript
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
2020/02/14 Javascript
[01:05]主宰至宝剑心之遗
2017/03/16 DOTA
[48:32]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs VG
2018/04/01 DOTA
Python编程入门的一些基本知识
2015/05/13 Python
python递归删除指定目录及其所有内容的方法
2017/01/13 Python
Python实现解析Bit Torrent种子文件内容的方法
2017/08/29 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
tesserocr与pytesseract模块的使用方法解析
2019/08/30 Python
Keras保存模型并载入模型继续训练的实现
2021/02/20 Python
德国婴儿推车和儿童安全座椅商店:BABYSHOP
2016/09/01 全球购物
介绍一下grep命令的使用
2012/06/28 面试题
物业招聘计划书
2014/01/10 职场文书
毕业生找工作求职信
2014/08/05 职场文书
党支部活动策划方案
2014/08/18 职场文书
医院护士见习期自我鉴定
2014/09/15 职场文书
劳动争议和解协议书范本
2014/11/20 职场文书
奇妙的 CSS shapes(CSS图形)
2021/04/05 HTML / CSS
解析python中的jsonpath 提取器
2022/01/18 Python