以上四种方法都能将变量输出。
使用变量替换,当变量文件存放路径改变时,可以不用改变所有文件中的路径。
conf/config.php里可加替换内容代码
‘view_replace_str'=>[
'__123__'=>'一二三'
]
四种赋值方式:
$this->assign('key','value');
$this->view->key2='value2';
View::share('key3','value3');//前面要use think\View
return $this-fetch('index',[
'email'=>'123@qq.com',
'user'=>'kiki'
]);
__URL__
__STATIC__
__JS__
__CSS__
View.php
/** * 构造函数 * @access public * @param array $engine 模板引擎参数 * @param array $replace 字符串替换参数 */ public function __construct($engine = [], $replace = []) { // 初始化模板引擎 $this->engine($engine); // 基础替换字符串 $request = Request::instance(); $base = $request->root(); $root = strpos($base, '.') ? ltrim(dirname($base), DS) : $base; if ('' != $root) { $root = '/' . ltrim($root, '/'); } $baseReplace = [ '__ROOT__' => $root, '__URL__' => $base . '/' . $request->module() . '/' . Loader::parseName($request->controller()), '__STATIC__' => $root . '/static', '__CSS__' => $root . '/static/css', '__JS__' => $root . '/static/js', ]; $this->replace = array_merge($baseReplace, (array) $replace); }
系统默认变量
__STATIC__
__URL__
__JS__
__CSS__
__ROOT__
'tpl_replace_string' => [ '__STATIC__' => Env::get('STATIC_PATH', '/static'), '__COMMON__' => Env::get('STATIC_PATH', '/static') . '/common', ]
固定值替换配置
view下的几种方式赋值
四种方式向页面传递值
1.assign
2.view
3.view::share
4.fetch()
namespace app\index\controller;
use think\Controller;
use think\View;
class Index extends Controller
{
public function index()
{
$this->assign('key', 'value');
$this->view->key2 = 'value2';
View::share('key3', 'value3');
return $this->fetch('index', [
'email' => '1010042851@qq.com',
'user' => 'ccy'
] )
}
}
向模板view中传值
TP5.1模板赋值
方法1:
use think\Controller; $this->view->key='value'; 或者 $this->view-share('key','value'); 或者 $this->assign('key','value'); 或者 $this->fetch('template_name',['key'=>'value']);
方法2:
use think\facade\View; View::share('key','value');
TP5.1 convention.php下没有view_replace_str
官方文档中写明5.1系统没有任何内置的替换规则。
全局替换可以在template.php
配置文件中添加:
//模板常量 'tpl_replace_string' => [ '__STATIC__' => '/public/static', '__JS__' => '/public/static/js', '__CSS__' => '/public/static/css', ]
配置文件中 view_replace_str 相当于fecth函数的第3个参数
默认路径在前端显示出来
__URL__
__CSS__
__JS__
__ROOT__
//常用的常量信息(获取不同路径) __ROOT__ 获取TP的根路径(/thinkphp) __SELF__ 当前浏览器地址栏中的地址(/thinkphp/index.php/Home/Index/test) __APP__ 入口文件的路径(/thinkphp/index.php) __MODULE__ 当前程序模块的路径(/thinkphp/index.php/Home) __CONTROLLER__ 当前控制器的路径(/thinkphp/index.php/Home/Index) __ACTION__ 当前操作方法的路径(/thinkphp/index.php/Home/Index/test)
thinkphp5中变量赋值可通过以下四种方法:
①$this->assign('变量名',$变量值(名)); //在命名空间下引入think\Controller;
②$this->view->变量名 = '变量值'; //在命名空间下引入think\View;
③View::share('变量名',$变量名); //在命名空间下引入think\View;
④return $this->fetch('html页面',[
'变量名' => ‘变量值',
],[
'大写字母' => '替换内容'
]); //在命名空间下引入think\Controller;
系统提供的路径常量有:
__URL__ //路由地址
__ROOT__ //根目录
__STATIC__ //static目录
__CSS__ //css目录
__JS__ //js目录
可自行在config目录中替换,替换函数为:
’view_replace_str‘ => [
'常量名' => '替换路径'
]
更改或者设置view的常量,只需更改或者设置配置的常量即可
这是框架think目录下的view.php的view层的常量替换
变量输出的四种方式
thinkphp5中变量赋值可通过以下四种方法:
①$this->assign('变量名',$变量值(名)); //在命名空间下引入think\Controller;
②$this->view->变量名 = '变量值'; //在命名空间下引入think\View;
③View::share('变量名',$变量名); //在命名空间下引入think\View;
④return $this->fetch('html页面',[
'变量名' => ‘变量值',
],[
'大写字母' => '替换内容'
]); //在命名空间下引入think\Controller;
系统提供的路径常量有:
__URL__ //路由地址
__ROOT__ //根目录
__STATIC__ //static目录
__CSS__ //css目录
__JS__ //js目录
可自行在config目录中替换,替换函数为:
’view_replace_str‘ => [
'常量名' => '替换路径'
]
$this->assign('key','value');和return $this->fetch('index', [
'email' =>'1426996802@qq.com']);、$this->view->key2 = 'value2';效果是一样的
$this->fetch()的第三个参数;也可向模板分配
fetch():
第一个参数:view视图文件;
第二个参数:给变量赋值(数组);
第三个参数:替换原有文本;
框架默认在配置中给我们定义了一些常量:看截图;
这些就类似于面向过程编程时的常量定义(定义的绝对路径);
当然,我们也可以多添加多定义几个来使用
通过继承controller和view,默认有四种方式可以通过控制器向模板赋值,这四种方式分配的变量,在模板中同时有效;系统会将这四种方式传递的变量进行合并,统一向模板中进行分配;
在模板中使用花括号{$email}最后在编译之后显示的是<?php echo $email; ?>
这个花括号是框架里面定义的,在配置里面就有;是smarty模板引擎的五配置两方法的一部分;
花括号和变量之间不能有空格;当引用其他插件,如果和花括号有冲突,可以更改配置;
编译文件(运行后的文件)在runtime目录下的temp目录下
以后的学习,偏向于继承think目录下的controller类来进行操作
几种赋值方式代码:
系统默认提供了这五个模版变量,可自行设置更改 在配置文件中 返回数组 'view_replace_str' => [ ]
系统定义的也可自行重新定义