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 相关文章推荐
织梦模板标记简介
Mar 11 PHP
PHP Google的translate API代码
Dec 10 PHP
PHP 验证码不显示只有一个小红叉的解决方法
Sep 30 PHP
php中怎么搜索相关联数组键值及获取之
Oct 17 PHP
php后门URL的防范
Nov 12 PHP
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
May 15 PHP
Linux下php5.4启动脚本
Aug 03 PHP
PHP往XML中添加节点的方法
Mar 12 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
Dec 21 PHP
Win7环境下Apache连接MySQL提示连接已重置的解决办法
May 09 PHP
PHP使用Redis长连接的方法详解
Feb 12 PHP
实现php删除链表中重复的结点
Sep 27 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
ThinkPHP实现分页功能
2017/04/28 PHP
Laravel中unique和exists验证规则的优化详解
2018/01/28 PHP
YII框架学习笔记之命名空间、操作响应与视图操作示例
2019/04/30 PHP
Javascript实例教程(19) 使用HoTMetal(4)
2006/12/23 Javascript
jQuery EasyUI API 中文文档 - MenuButton菜单按钮使用介绍
2011/10/06 Javascript
一个基于jquery的文本框记数器
2012/09/19 Javascript
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
2013/05/27 Javascript
node.js中的fs.unlink方法使用说明
2014/12/15 Javascript
JS动态加载当前时间的方法
2015/02/09 Javascript
JavaScript中定义类的方式详解
2016/01/07 Javascript
jQuery数据类型小结(14个)
2016/01/08 Javascript
javascript如何创建对象
2016/08/29 Javascript
微信小程序开发之圆形菜单 仿建行圆形菜单实例
2016/12/12 Javascript
JS奇技之利用scroll来监听resize详解
2017/06/15 Javascript
JavaScript数据结构与算法之队列原理与用法实例详解
2017/11/22 Javascript
Angular HMR(热模块替换)功能实现方法
2018/04/04 Javascript
vue单页开发父子组件传值思路详解
2018/05/18 Javascript
mpvue跳转页面及注意事项
2018/08/03 Javascript
浅谈Vue.js 中的 v-on 事件指令的使用
2018/11/25 Javascript
javascript设计模式 ? 观察者模式原理与用法实例分析
2020/04/22 Javascript
vue 子组件watch监听不到prop的解决
2020/08/09 Javascript
python搭建虚拟环境的步骤详解
2016/09/27 Python
Python 获得13位unix时间戳的方法
2017/10/20 Python
python语言中with as的用法使用详解
2018/02/23 Python
通过python调用adb命令对App进行性能测试方式
2020/04/23 Python
FILA斐乐中国官方商城:意大利运动品牌
2017/01/25 全球购物
欧洲顶级体育电子商务网站:SportsShoes.com
2018/03/27 全球购物
马来西亚网上花店:FlowerAdvisor马来西亚
2020/01/03 全球购物
2013年员工自我评价范文
2013/12/27 职场文书
库房管理员岗位职责
2014/03/09 职场文书
《美丽的南沙群岛》教学反思
2014/04/27 职场文书
人力资源本科毕业生求职信
2014/06/04 职场文书
战略性融资合作协议书范本
2014/10/17 职场文书
2015年乡镇流动人口工作总结
2015/05/12 职场文书
高考1977观后感
2015/06/04 职场文书
2016年10月份红领巾广播稿
2015/12/21 职场文书