ThinkPHP3.2.3 U()方法的使用总结

使用thinkphp3.2的朋友都知道,默认情况下,运行入口文件index.php时,系统会自动生成一个应用目录(当然还有其他目录文件,此处忽略),应用目录下面,会默认生成Home模块,那这个模块一般都是用于前端业务逻辑的开发,

如果我们需要生成一个Admin模块用于后台应用,我们可以在项目根目录下面定义一个admin.php的入口文件

注意:admin.php文件中定义的内容将会直接关系到后台模板中U()方法的使用,下面来总结一下:

①:

这种写法的好处就是,当你运行admin.php时,会在应用目录下面生成Admin模块(Admin目录,目录下面的内容与Home目录下面的内容是一样的)

如果你在admin.php文件中是这样定义的,那后台模板中U()方法可以这样写:

{:U('Admin/Anli/hangye_edit',array('id'=>$v['id']))}
// 或
{:U('Anli/hangye_edit',array('id'=>$v['id']))}
// 这两种都可以
如果U方法只写一个参数的话,可以这样写:

{:U('Anli/hangye_edit/id/'.$v['id'])}
但需要注意的是:
如果参数是大写的话,如上面的id变为ID,系统会自动解析成i_d,导致操作失败

另外:

不要再把模块给添加上去,因为入口文件已经绑定了模块为Admin

因此,下面写法是错误的

{:U('Admin/Anli/hangye_edit/id/'.$v['id'])}

②:

这种定义方式的话,需要手动在应用目录下面添加Admin模块目录(内容一般与Home目录下面的内容是一样的)

如果是header()来重定向的话

在U方法中的第一个参数中需要把模块的信息不上,例如:

{:U('Admin/Anli/hangye_edit/id/'.$v['id'])}
如果没有Admin,{:U('Anli/hangye_edit/id/'.1v['id'])}这样的话,无法识别当前模块,系统会把Anli当成模块(Anli应该是控制器),报无法加载模块:Anli错误

也可以这样写:

{:U('Admin/Anli/hangye_edit',array('id'=>$v['id']))}

这种写法系统会识别当前模块,所以也可以这样写:

{:U('Anli/hangye_edit',array('id'=>$v['id']))}

上面写法没有参数大小写问题



注意:

U('地址表达式',['参数'],['伪静态后缀'],['显示域名'])

U方法的第三个参数是伪静态后缀,如果你在配置文件中有定义,如:

'TMPL_TEMPLATE_SUFFIX'  => '.html',     // 默认模板文件后缀

那么第三个参数就不用写,最后生成的url会自动加上.html

如果没有定义,则按需添加


以上是个人测试结果,如有错误之处,欢迎纠正!





你可能感兴趣的:(PHP,ThinkPHP)