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 字符串分割和比较
Oct 06 PHP
php使用百度ping服务代码实例
Jun 19 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
Jul 25 PHP
php从字符串创建函数的方法
Mar 16 PHP
ThinkPHP文件缓存类代码分享
Apr 22 PHP
php格式化电话号码的方法
Apr 24 PHP
解读PHP的Yii框架中请求与响应的处理流程
Mar 17 PHP
php结合ajax实现手机发红包的案例
Oct 13 PHP
PHP实现压缩图片尺寸并转为jpg格式的方法示例
May 10 PHP
PHP中Static(静态)关键字功能与用法实例分析
Apr 05 PHP
php使用curl模拟多线程实现批处理功能示例
Jul 25 PHP
laravel框架 laravel-admin上传图片到oss的方法
Oct 13 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
Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
2012/07/23 PHP
PHP实现无限极分类图文教程
2014/11/25 PHP
Laravel 5.4因特殊字段太长导致migrations报错的解决
2017/10/22 PHP
jQuery 页面载入进度条实现代码
2009/02/08 Javascript
javascript 全等号运算符使用说明
2010/05/31 Javascript
jquery获取元素索引值index()示例
2014/02/13 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
2015/09/04 Javascript
利用Query+bootstrap和js两种方式实现日期选择器
2017/01/10 Javascript
用move.js库实现百叶窗特效
2017/02/08 Javascript
JavaScript使用递归和循环实现阶乘的实例代码
2018/08/28 Javascript
自己动手封装一个React Native多级联动
2018/09/19 Javascript
vue中使用codemirror的实例详解
2018/11/01 Javascript
微信小程序 JS动态修改样式的实现方法
2018/12/16 Javascript
如何为vuex实现带参数的 getter和state.commit
2019/01/04 Javascript
vue双向绑定及观察者模式详解
2019/03/19 Javascript
layui数据表格跨行自动合并的例子
2019/09/02 Javascript
nginx部署多个vue项目的方法示例
2020/09/06 Javascript
详解python 拆包可迭代数据如tuple, list
2017/12/29 Python
教你使用python实现微信每天给女朋友说晚安
2018/03/23 Python
python opencv实现旋转矩形框裁减功能
2018/07/25 Python
Python3中exp()函数用法分析
2019/02/19 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
2019/02/26 Python
python3对接mysql数据库实例详解
2019/04/30 Python
健身场所或家用健身设备:Life Fitness
2017/11/01 全球购物
师范教师大学生职业生涯规划范文
2014/01/05 职场文书
教师档案管理制度
2014/01/23 职场文书
商场中秋节活动方案
2014/02/07 职场文书
《蒲公英》教学反思
2014/02/28 职场文书
还款承诺书范文
2014/05/20 职场文书
会计专业毕业生求职信
2014/07/04 职场文书
绿色校园广播稿
2014/10/13 职场文书
企业年检委托书范本
2014/10/14 职场文书
Django分页器的用法你都了解吗
2021/05/26 Python
探讨Java中的深浅拷贝问题
2021/06/26 Java/Android
详解Oracle块修改跟踪功能
2021/11/07 Oracle
使用JS前端技术实现静态图片局部流动效果
2022/08/05 Javascript