控制器

控制器是 MVC 模式中的一部分, 是继承Star_Controller_Action的对象,负责处理请求和生成响应。 具体来说,控制器从应用主体接管控制后会分析请求数据并传送到业务逻辑层到模型, 传送模型结果到视图,最后生成输出响应信息。控制器文件默认在application/controllers目录下。

命名规范:类名是首字母大写,其他字母小写,Controller结尾的命名方式(例如:IndexController),控制器文件名与类名保持一致IndexController.php。每个控制器下面可以有多个动作(Action),动作名是小写字母,Action结尾的命名方式(例如: indexAction)。

建议:控制层一般只做简单的数据校验,复杂的逻辑交给业务逻辑层处理,实现高内聚低耦合。

默认控制器IndexController.php

  1. <?php
  2. class IndexController extends Star_Controller_Action
  3. {
  4. public function init()
  5. {
  6. }
  7. public function indexAction()
  8. {
  9. }
  10. }
  11. ?>
提示:init是控制器初始化,执行所有action之前都会先执行init方法。

创建错误控制器

默认情况页面404和错误信息都会被转发到ErrorController,所以我们必须有个ErrorController来处理错误信息

  1. <?php
  2. class ErrorController extends Star_Controller_Action
  3. {
  4. public function indexAction()
  5. {
  6. //错误码
  7. $code = $this->view->code;
  8. }
  9. }
  10. ?>

当然相对应也必须有错误模板文件,即application/views/scripts/error/index.phtml

  1. <!DOCTYPE html
  2. PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  7. <title>错误</title>
  8. </head>
  9. <body>
  10. <h1>出错了</h1>
  11. <p>出现了一个错误,请重试。</p>
  12. </body>
  13. </html>

方法

render

  • string action //view script
  • bool is_controller / /是否在controller目录下查找视图脚本,默认true,false 主要为了展示公用的信息页面。
    正常情况contorller执行结束之后都会自动调用render,解析controller目录下相对应的视图脚本。当然你也可以通过配置resources.view.display = false,设置默认不展示视图脚本。render是为了帮助不同的action可以共用同一个view,减少view冗余,可以在controller任何位置调用render。

setNoRender

表示不会调用render,同时关闭布局。可以controller任何位置调用。

disableLayout

关闭布局。如何开启布局可以查看布局章节

showMessage

  • message //提示信息
  • url //重定向地址,可不填,不填表示回到当前页面
    显示提示信息,相当于调用 $this->render('message', false);必须有提示信息页面application/views/scripts/message.phtml。例如:
  1. <script type="text/javascript">
  2. alert("<?php echo $this->message; ?>");
  3. location.href="<?php if ($this->url) { echo $this->url; } else{ echo $_SERVER["HTTP_REFERER"]; } ?>"
  4. </script>

showWarning

  • message //警告信息
  • url //重定向地址,可不填,不填表示回到当前页面
    显示警告信息, 相当于调用 $this->render('warning', false); 必须有警告信息页面application/views/scripts/warning.pthml。例如:
  1. <script type="text/javascript">
  2. alert("<?php echo $this->message; ?>");
  3. location.href="<?php if ($this->url) { echo $this->url; } else{ echo $_SERVER["HTTP_REFERER"]; } ?>"
  4. </script>

showJson

  • status //错误提示码 200表示成功 其他表示相关错误信息,可自行定义
  • data //status为200才有数据返回,当status不等于200时,data值为message信息
  • message //提示信息
    返回统一JSON数据格式

show404

显示404页面

redirect

页面重定向,可以是内部地址,也可以是完整的URL地址(http://...)

对象

Request

View