Zend Framework动作助手Url用法详解

 更新时间:2016年03月05日 10:59:16   作者:coder  
这篇文章主要介绍了Zend Framework动作助手Url用法,结合实例形式分析了动作助手Url的功能,定义与相关使用技巧,需要的朋友可以参考下

本文实例讲述了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://www.jb51.net/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);
  }
}

更多关于zend相关内容感兴趣的读者可查看本站专题:《Zend FrameWork框架入门教程》、《php优秀开发框架总结》、《Yii框架入门及常用技巧总结》、《ThinkPHP入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家PHP程序设计有所帮助。

相关文章

  • PHP学习记录之数组函数

    PHP学习记录之数组函数

    这篇文章主要介绍了PHP学习记录之数组函数,php中的数组是一个有序映射,数组可以接受任意数量用逗号分隔符的键值对。下面结合代码实例给大家接受,感兴趣的朋友一起看看吧
    2018-06-06
  • 使用Composer安装Yii框架的方法

    使用Composer安装Yii框架的方法

    这篇文章主要介绍了使用Composer安装Yii框架的方法,结合具体实例分析了Composer的相关使用技巧,需要的朋友可以参考下
    2016-03-03
  • Laravel如何使用Redis共享Session

    Laravel如何使用Redis共享Session

    这篇文章主要介绍了Laravel如何使用Redis共享Session ,本文给大家介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
    2018-02-02
  • 详解php用curl调用接口方法,get和post两种方式

    详解php用curl调用接口方法,get和post两种方式

    本篇文章主要介绍了详解php用curl调用接口方法,get和post两种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • web server使用php生成web页面的三种方法总结

    web server使用php生成web页面的三种方法总结

    web server使用php生成web页面的三种方法。需要的朋友可以过来参考下,希望对大家有所帮助
    2013-10-10
  • 从零开始学YII2框架(四)扩展插件yii2-kartikgii

    从零开始学YII2框架(四)扩展插件yii2-kartikgii

    yii2-kartikgii这个插件主要功能是帮助你在使用gii生成代码curd的时候生成kartik-gird的。不需要每次用默认的gii工具生成代码之后再手动添加kartik-gird,这正是我想要的功能。快速生成kartik-grid。
    2014-08-08
  • 基于PHP如何把汉字转化为拼音

    基于PHP如何把汉字转化为拼音

    将汉字转化为拼音是程序员们经常用到的操作任务之一,大家还经常见到ios 将汉字转化为拼音、excel汉字转化成拼音、excel汉字转化为拼音等,本文通过一段代码实例给大家介绍基于PHP如何把汉字转化为拼音,感兴趣的朋友一起学习吧
    2015-12-12
  • Laravel (Lumen) 解决JWT-Auth刷新token的问题

    Laravel (Lumen) 解决JWT-Auth刷新token的问题

    今天小编就为大家分享一篇Laravel (Lumen) 解决JWT-Auth刷新token的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • thinkphp区间查询、统计查询与SQL直接查询实例分析

    thinkphp区间查询、统计查询与SQL直接查询实例分析

    这篇文章主要介绍了thinkphp区间查询、统计查询与SQL直接查询,以实例形式较为详细的分析了ThinkPHP比较常用的查询技巧,非常具有实用价值,需要的朋友可以参考下
    2014-11-11
  • yii中widget的用法

    yii中widget的用法

    这篇文章主要介绍了yii中widget的用法,实例分析了widget在视图中的调用方法以及定义方法,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-12-12

最新评论