fightjianxian

U方法常用于ThinkPHP里的页面跳转

官方称为url组装,

就是根据某种规则组成一个url地址,这个功能就叫组装。

在ThinkPHP里,系统提供了一个封装的函数来处理url的组装,俗称U方法。

U方法是系统提供的快速方法,除此外还有A,B,C,D,E,F,G,IM,R,S,U等快速方法。这些方法都定义在系统的函数库文件(ThinkPHP/Common/functions.php)里

/**
 * URL组装 支持不同URL模式
 * @param string $url URL表达式,格式:\'[模块/控制器/操作#锚点@域名]?参数1=值1&参数2=值2...\'
 * @param string|array $vars 传入的参数,支持数组和字符串
 * @param string|boolean $suffix 伪静态后缀,默认为true表示获取配置值
 * @param boolean $domain 是否显示域名
 * @return string
 */
function U($url=\'\',$vars=\'\',$suffix=true,$domain=false) {...}

分析源码后即可得知:U方法有三种形式

①U(\'方法名\')→用于跳转同级控制器下的指定页面。举个例子:发件后跳到发件箱

②U(\'控制器名/方法名\')→用于跳转到同级目录下的指定控制器下的指定页面。例如:错误页面的空白操作,会在url错误时跳到Empty控制器下的error页面

③U(\'分组名/控制器名/方法名\')→用于跳转到同级应用下的指定分组指定控制器下的指定页面。一般用的不多

U方法语法:①U(\'url路径\',参数数组可选);②指定控制器下的指定方法,例U(\'Index/index\')

例如:使用U方法组装出当前控制器下index方法的地址,U(\'index\')

Test控制器:

<?php
    namespace Admin\controller;
    use Think\Controller;
    class TestController extends Controller{
        public function test(){
            echo U(\'index\');//输出/index.php/Admin/Test/index.html
        }
    }
?>
<meta charset="utf-8">

 加上数组参数,例echo U(\'index/index\',array(\'name\' => \'tony\',\'age\' => \'23\'));

<?php
    namespace Admin\controller;
    use Think\Controller;
    class TestController extends Controller{
        public function test(){
            echo U(\'index/index\',array(\'name\' => \'tony\',\'age\' => \'23\'));//输出/index.php/Admin/index/index/name/tony/age/23.html
        }
    }
?>

 总结:

通用语法格式:U(\'分组名/控制器名/方法名\',array(\'参数名1\'=>参数值1,\'参数名2\'=>参数值2....))

 2. Tp系统中的跳转

在ThinkPHP中有两种跳转方法:成功跳转、失败跳转,在控制器中执行跳转

成功跳转:$this->success(跳转提示信息,跳转地址--可选,等待时间--可选);

                  没有指定跳转地址,则跳转到上一页

<?php
    namespace Admin\controller;
    use Think\Controller;
    class TestController extends Controller{
        public function test1(){
            echo U(\'index/index\',array(\'name\' => \'tony\',\'age\' => \'23\'));
        }
        public function test2(){
            //成功跳转,地址为test1,即当前控制器下的test1方法
            $this->success(\'操作成功\',U(\'test1\'),5);
        }

失败跳转:$this->error();

      语法与成功跳转相同,对上述进行修改

public function test2(){
      //失败跳转,地址为test1,即当前控制器下的test1方法
      $this->error(\'操作失败\',U(\'test1\'),5);
}

总结:控制器的跳转成功和失败方法,继承自Think的controller.class.php控制器

/**
     * 操作错误跳转的快捷方法
     * @access protected
     * @param string $message 错误信息
     * @param string $jumpUrl 页面跳转地址
     * @param mixed $ajax 是否为Ajax方式 当数字时指定跳转时间
     * @return void
     */
    protected function error($message=\'\',$jumpUrl=\'\',$ajax=false) {
        $this->dispatchJump($message,0,$jumpUrl,$ajax);
    }

    /**
     * 操作成功跳转的快捷方法
     * @access protected
     * @param string $message 提示信息
     * @param string $jumpUrl 页面跳转地址
     * @param mixed $ajax 是否为Ajax方式 当数字时指定跳转时间
     * @return void
     */
    protected function success($message=\'\',$jumpUrl=\'\',$ajax=false) {
        $this->dispatchJump($message,1,$jumpUrl,$ajax);
    }

 

 

【总结】

U方法用于完成对URL地址的组装,特点在于可以自动根据当前的URL模式和设置生成对应的URL地址,格式为:

U(\'地址\',\'参数\',\'伪静态\',\'是否跳转\',\'显示域名\');

1 //比如操作成功跳转到Store模块下的Ump控制器中的lists方法
2 $this->success(\'新增成功\',U(\'Strore/Ump/lists\'));
1 //跳转时带着参数的话
2 $this->success(\'新增成功\',U(\'Store/Ump/lists\',\'type=1&id=1\'));

当在模板中使用U方法时,好处在于:一旦你的环境变化或者参数设置改变,你不需要更改模板中的任何代码。

在模板中的调用格式需要采用 {:U(\'地址\', \'参数\'…)} 的方式

<!--在模板中使用U方法 -->
{:U(\'Store/Ump/lists\',\'type=1&id=1\')}
{:U(\'Article/index\',\'category=\'.$vo[\'name\'])}

 

 

 

.

.

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2022-02-16
  • 2022-02-18
  • 2022-12-23
  • 2022-01-17
  • 2022-02-07
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-07-02
  • 2022-12-23
  • 2022-01-08
  • 2022-02-20
相关资源
相似解决方案