TP5学习第三天,视图输出及回顾

要输出视图,必须在控制器方法中进行模板渲染输出操作

<?php
namespace app\index\controller;
use think\Controller;
class Index extends Controller
{
public function hello($name = 'thinkphp')
{
$this->assign('name', $name);
return $this->fetch();
}
}

注意, Index 控制器类继承了 think\Controller 类之后,我们可以直接使用封装好的assign 和
fetch 方法进行模板变量赋值和渲染输出。
fetch 方法中我们没有指定任何模板,所以按照系统默认的规则(视图目录/控制器/操作方法)输出了
view/index/hello.html 模板文件。

注意:

  1. return $this->fetch()这个方法,是用于视图的渲染模板输出。

但是如果请求为ajax的话,他返回的就是json转义之后的方法,必须要把return改成echo才行。
这很不合常理,fetch本身就是视图输出,不应该判断请求就进行转义。

除了路由配置文件中定义之外,还可以采用动态定义路由规则的方式定义,例如在路由配置文件(
application/route.php )的开头直接添加下面的方法:
use think\Route;
Route::rule('hello/:name', 'index/hello');
完成的效果和使用配置方式定义是一样的。
无论是配置方式还是通过Route类的方法定义路由,都统一放到路由配置文件application/route.php
文件中

注意:路由配置不支持在模块配置文件中设置。

路由参数
我们还可以约束路由规则的请求类型或者URL后缀之类的条件,例如:
二、URL和路由
本文档使用 看云 构建 - 27 -
return [
// 定义路由的请求类型和后缀
'hello/[:name]' => ['index/hello', ['method' => 'get', 'ext' => 'html']],
];
上面定义的路由规则限制了必须是get 请求,而且后缀必须是html 的,所以下面的访问地址:
http://tp5.com/hello // 无效
http://tp5.com/hello.html // 有效
http://tp5.com/hello/thinkphp // 无效
http://tp5.com/hello/thinkphp.html // 有效

需要用到事务的功能,请先修改数据表的类型为InnoDB ,而不是MyISAM 。

MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法。与其他存储引擎比较,MyISAM具有检查和修复表格的大多数工具。 MyISAM表格可以被压缩,而且它们支持全文搜索。它们不是事务安全的,而且也不支持外键。如果事物回滚将造成不完全回滚,不具有原子性。如果执行大量的SELECT,MyISAM是更好的选择。

InnoDB:这种类型是事务安全的。它与BDB类型具有相同的特性,它们还支持外键。InnoDB表格速度很快。具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它。如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表,对于支持事物的InnoDB类型的表,影响速度的主要原因是AUTOCOMMIT默认设置是打开的,而且程序没有显式调用BEGIN开始事务,导致每插入一条都自动Commit,严重影响了速度。可以在执行SQL前调用BEGIN,多条SQL形成一个事物(即使AUTOCOMMIT打开也可以),将大大提高性能。

猜你喜欢

转载自blog.csdn.net/wocaa2046/article/details/84284726