3.5.3.2 流程控制

3.5.3.2.1 redirect

redirect(string $url, integer $status, boolean $exit)

redirect()应该是你最经常使用的流程控制的方法之一。该方法接收的第一个参数是CakePHP形式的相对URL。当用户成功地下了订单之后,你也许会希望将他带到收款台前执行下一步操作。

function placeOrder() {

    //这里是订单部分的逻辑

    if($success) {
        $this->redirect(array('controller' => 'orders', 'action' => 'thanks'));
    } else {
        $this->redirect(array('controller' => 'orders', 'action' => 'confirm'));
    }
}
  1. function placeOrder() {
  2. //这里是订单部分的逻辑
  3. if($success) {
  4. $this->redirect(array('controller' => 'orders', 'action' => 'thanks'));
  5. } else {
  6. $this->redirect(array('controller' => 'orders', 'action' => 'confirm'));
  7. }
  8. }

redirect()接收的第二个参数允许你定义一个HTTP的状态码(status code)比如视具体情况,你可能选择用301(永久性转移)或者303(see other)。

在第三参数没有被设定为false的情况下,重定向结束之后该方法会自动调用exit()结束程序。

3.5.3.2.2 flash

flash(string $message, string $url, integer $pause)

同样,flash()方法也会将用户重定向到一个新的页面。不同之处在于flash()方法在将用户转向到新页面之前会向其显示一条提示信息。

传递给该方法的第一个参数就是提示信息的内容,第二个参数则是CakePHP形式的相对URL。CakePHP将会显示这条信息($message)$pause秒,然后执行转向。

有关页面内提示信息(flash message)的显示请参看SessionComponentsetFlash()方法。