composer 安装
composer create-project topthink/think tp
多应用
composer require topthink/think-multi-app
隐藏index.php的.htaccess,文档缺少一个问号
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
view.php的一些配置
在
/**
* 模板配置参数
* @var array
*/
protected $config = [
'view_path' => '', // 模板路径
'view_suffix' => 'html', // 默认模板文件后缀
'view_depr' => DIRECTORY_SEPARATOR,
'cache_path' => '',
'cache_suffix' => 'php', // 默认模板缓存后缀
'tpl_deny_func_list' => 'echo,exit', // 模板引擎禁用函数
'tpl_deny_php' => false, // 默认模板引擎是否禁用PHP原生代码
'tpl_begin' => '{', // 模板引擎普通标签开始标记
'tpl_end' => '}', // 模板引擎普通标签结束标记
'strip_space' => false, // 是否去除模板文件里面的html空格与换行
'tpl_cache' => true, // 是否开启模板编译缓存,设为false则每次都会重新编译
'compile_type' => 'file', // 模板编译类型
'cache_prefix' => '', // 模板缓存前缀标识,可以动态改变
'cache_time' => 0, // 模板缓存有效期 0 为永久,(以数字为值,单位:秒)
'layout_on' => false, // 布局模板开关
'layout_name' => 'layout', // 布局模板入口文件
'layout_item' => '{__CONTENT__}', // 布局模板的内容替换标识
'taglib_begin' => '{', // 标签库标签开始标记
'taglib_end' => '}', // 标签库标签结束标记
'taglib_load' => true, // 是否使用内置标签库之外的其它标签库,默认自动检测
'taglib_build_in' => 'cx', // 内置标签库名称(标签使用不必指定标签库名称),以逗号分隔 注意解析顺序
'taglib_pre_load' => '', // 需要额外加载的标签库(须指定标签库名称),多个以逗号分隔
'display_cache' => false, // 模板渲染缓存
'cache_id' => '', // 模板缓存ID
'tpl_replace_string' => [], //模板字符串替换
'tpl_var_identify' => 'array', // .语法变量识别,array|object|'', 为空时自动识别
'default_filter' => 'htmlentities', // 默认过滤方法 用于普通标签输出
];
中间件
https://www.kancloud.cn/manual/thinkphp6_0/1037493
验证器
try {
validate(Staff::class)->extend('check')->check($data);
} catch (ValidateException $e) {
// 验证失败 输出错误信息
return json(['code' => 1, 'msg' => $e -> getError()]);
}
门面,phpstrom提示和无法跳转到对应的方法,加上注释
/**
* Class Ajax
* @see \app\common\Ajax
* @package app\facade
* @mixin \app\common\Ajax
*/
url助手函数,无法返回字符串,
url(’/’)->__toString()或者url(’/’)->build()都可以生成url字符串
$this->request->action()
json方法->getContent()获取内容
重定向不跳转,使用send
redirect(url('/'))->send();
使用Spreadsheet导出excel时候在 $writer->save(‘php://output’)后面加上exit();否则导出会需要修复
模型save();
/**
* 使用表达式设置数据
* @access public
* @param string $value 表达式
* @return Raw
*/
public function raw(string $value): Raw
{
return new Raw($value);
}
'score' => Db::raw('score+1');
异常处理返回
return Response::create(View::fetch('public/error'));
富文本显示
{$str|raw}
批量新增获取id
$model->saveAll($data)->column('id');