Skip to content
やかみそら edited this page Nov 23, 2016 · 23 revisions

控制器

什么是控制器?

简而言之,一个控制器就是一个类文件。

当控制器的名称和你设置的路由匹配上时,它将会被加载。

让我们试试看:Hello World!

接下来你会看到如何创建一个简单的控制器,打开你的文本编辑器,新建一个文件 Blog.php , 然后放入以下代码:

use Kotori\Core\Controller;

class Blog extends Controller {

    public function index()
    {
        echo 'Hello World!';
    }
}

然后将文件保存到 app/controllers 目录下。

在配置中添加 $config['URL_ROUTE'] = array('/' => 'Hello/index');

现在使用类似下面的 URL 来访问你的站点:

http://example.com/

如果一切正常,你将看到:

Hello World!

另外,一定要确保你的控制器继承了父控制器类,这样它才能使用父类的方法。

Url生成

为了配合URL格式,我们需要能够动态的根据当前的URL设置生成对应的URL地址,为此,内置提供了url方法,用于URL的动态生成,可以确保项目在移植过程中不受环境的影响。

推荐在任何时候都使用这种方法来生成你的 URL ,这样在你的 URL 变动时你的代码将具有可移植性。

传给函数的 URI 段参数可以是一个字符串,也可以是个数组,下面是字符串的例子:

$this->route->url('news/123');

上例将返回类似于:

http://example.com/news/123

下面是使用数组的例子:

echo $this->route->url(array('news', '123'));

如果你配置了多域名,你一定希望可以分域名进行url生成:

echo $this->route->url('test', 'module1');

将返回module1对应的域名所拼接生成的url地址。

AJAX返回

用于返回JSON格式的数据。

调用示例:

$array['name'] = 'MahuaTeng';
$array['length'] = 1;
$this->response->throwJSON($array);

跳转

301/302跳转到某页面

调用示例:

$this->response->redirect('http://www.qq.com', true);//跳转到马化腾首页
//根据第二个参数来判断是301还是302跳转

接受安全的变量

在Web开发过程中,我们经常需要获取系统变量或者用户提交的数据,这些变量数据错综复杂,而且一不小心就容易引起安全隐患,但是如果利用好框架P提供的变量获取功能,就可以轻松的获取和驾驭变量了。

示例:

    $id    =  $this->request->input('get.id'); // 获取get变量
    $name  =  $this->request->input('post.name');  // 获取post变量
    $value =  $this->request->input('session.var'); // 获取session变量
    $name  =  $this->request->input('cookie.name'); //获取cookie变量
    $file  =  $this->request->input('server.PHP_SELF'); // 获取server变量
    $get   =  $this->request->input('get.') //获取$_GET数组

以 CLI 方式运行

让我们试一试:Hello World!

让我们先创建一个简单的控制器,打开你的文本编辑器,新建一个文件并命名为 Tools.php,然后输入如下的代码:

use Kotori\Core\Controller;

class Tools extends Controller {

    public function message($to = 'World')
    {
        echo "Hello {$to}!".PHP_EOL;
    }
}

我们在配置文件中添加$config['URL_ROUTE'] = array('tools/(.*)' => array('cli' => 'Tools/message/$1'));

我们可以通过 CLI 来访问。在 Mac/Linux 下你可以打开一个终端,在 Windows 下你可以打开 “运行”,然后输入 "cmd",进入项目所在的目录。

$ cd /path/to/project;
$ php index.php tools/kotori

如果你操作正确,你应该会看到 Hello kotori!

错误页面

当你的系统发生错误时,将输出错误页面。 如果你打开了APP_DEBUG模式,将在视图右下角现实Trace信息,方便进行错误、SQL调试。 如果你需要自定义错误模板,请参照views/Public/error.html自行修改。 需要注意的是关闭APP_DEBUG后将不再显示错误信息。

Clone this wiki locally