CI框架–头信息,构造器,视图

今天继续学习CI框架的相关知识,分析下面语句,将匹配到的用户,Location跳转至相应界面,header()函数用来向客户端发送原始HTTP报头。

`if ($this->user ['uid'] == 0) {`
 `header("Location:" . url('user/login'));`
`}`

头信息作用

1.跳转,当浏览器接收到头信息中的Location:xxx后,就会自动跳转到 xxxx 指向的URL地址,类似与js 跳转。但两者不同的是,Location跳转只有浏览器知道,外部的用户无法知道体内容存在与否。

2、指定网页的内容:同样一个XML文件,如果头信息中指定:Content-type: application/xml 的话,浏览器会将其按照XML文件格式解析。但是,如果头信息中是:Content-type: text/xml 的话,浏览器就会将其看作存文本解析。(浏览器不是按照扩展名解析文件的)

3、附件:有时候碰到在网站下载东西点开后,显示都为乱码。这是因为浏览器把它当作网页打开了。这与头信息有关。有些网站也因为网站设计者忘记写Content-type,导致浏览器判断错误,从而无法打开。因为Conteent-type作用是判断打开还是保存。另外一个方法可以指定内容为附件、需要保存–Content-Disposition: attachment; filename=”xxxxx”

PHP如何实现跳转

1、跳转:header(“Location: http://www.example.com/“);

2、指定内容: header(‘Content-type: application/pdf’);

3、附件: header(‘Content-Disposition: attachment; filename=”downloaded.pdf”‘);// 指定内容为附件 readfile(‘original.pdf’);// 打开文件,并输出。

**注意:**所有头信息都必须在体内容之前,在之前有任何输出了的话,header函数中的头信息就没用了。比如,在文件最开头的<?php 处,如果前面有空格或者有空行,那header函数就没用了(但也可以通过设置:output_buffer来解决)。

通过 URI 分段向你的方法传递参数

如果URI 多于两个段,多余的段将作为参数传递到所写的方法中。

例如,假设URI 是这样:

example.com/index.php/products/shoes/sandals/123

所写的方法将会收到第三段和第四段两个参数(”sandals” 和 “123”):

`<?php`
`class Products extends \CodeIgniter\Controller {`
`​`
 `public function shoes($sandals, $id)`
 `{`
 `echo $sandals;`
 `echo $id;`
 `}`
`}`
构造函数

如果准备在控制器中使用构造函数,要在函数中加上这句代码::

parent::__construct(…$params);

原因是你的构造函数将会覆盖父类的构造函数,所以我们要手工的调用它。

例如:

`<?php`
`class Blog extends \CodeIgniter\Controller`
`{`
 `public function __construct(...$params)`
 `{`
 `parent::__construct(...$params);`
`​`
 `// Your own constructor code`
 `}`
`}`
在子目录中存储视图

视图文件保存到子目录中。加载视图时需要包含子目录的名字,例如:

echo view('directory_name/file_name');
命名空间视图

将视图存储在已命名空间的 View 目录下,并像加载加载命名空间一样加载视图。虽然 PHP 不支持在命名空间下加载非类文件,但是 CodeIgniter 提供了此功能,使你可以将它们以类似于模块的方式打包在一起,以便于重用或分发。

视图中显示动态数据

数据通过视图方法的第二个参数从控制器传递到视图,这是一个例子:

`$data = [`
 `'title'   => 'My title',`
 `'heading' => 'My Heading',`
 `'message' => 'My Message'`
`];`
`​`
`echo view('blogview', $data);`

打开控制器文件,并添加一下代码:

`<?php namespace App\Controllers;`
`​`
`class Blog extends \CodeIgniter\Controller`
`{`
 `public function index()`
 `{`
 `$data['title']   = "My Real Title";`
 `$data['heading'] = "My Real Heading";`
`​`
 `echo view('blogview', $data);`
 `}`
`}`

现在打开视图文件,并将文本更改为与数据中的数组键对应的变量:

`<html>`
`<head>`
 `<title><?= $title ?></title>`
`</head>`
`<body>`
 `<h1><?= $heading ?></h1>`
`</body>`
`</html>`

现在重新刷新页面,变量已经替换成数据中的值。

默认情况下,传递的数据只在当前调用 view 中可用。如果在一次请求中多次调用该方法,则必须将所需的数据传递给每个视图。这样可以防止 数据显示/覆盖到其他视图中的数据而导致出现问题。如果你想保留数据,则可以将 saveData 选项传递到第三个参数的 $option 数组中:

`$data = [`
 `'title'   => 'My title',`
 `'heading' => 'My Heading',`
 `'message' => 'My Message'`
`];`
`​`
`echo view('blogview', $data, ['saveData' => true]);`
php ci框架中的$this->uri->segment()意思

获得url上的参数

比如:…index.php/controller/index/3

$this->uri->segment(3);就是url上从index.php开始往后数,/划分,例子上就是得到的3

10种常见机器学习的错误以及如何避免他们

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值