PHP 8.6.0 Beta 3 is available for testing

Yaf_Controller_Abstract::forward

(Yaf >=1.0.0)

Yaf_Controller_Abstract::forward将当前请求转发到另一个动作

说明

public function Yaf_Controller_Abstract::forward(string $action, ?array $parameters = ?): ?bool
public function Yaf_Controller_Abstract::forward(string $controller, string $action, ?array $parameters = ?): ?bool
public function Yaf_Controller_Abstract::forward(
    string $module,
    string $controller,
    string $action,
    ?array $parameters = ?
): ?bool

将当前请求转发到另一个动作。目标根据参数的数量和类型确定:

  • 只有 action:转发到当前控制器的另一个动作。
  • controlleraction:转发到另一个控制器。
  • modulecontrolleraction:转发到另一个模块。
  • 可选的 parameters 数组携带调用参数,可以通过 Yaf_Request_Abstract::getParam() 获取。

注意:

此方法不会立即切换到目标动作,切换会在当前流程结束后发生。 如果想立即交出控制权,请从当前动作方法中返回 (返回 false 还会告诉 Yaf 不要自动渲染当前视图)。

参数

module

目标模块名。如果指定了当前模块,则原样使用。

controller

目标控制器名。

action

目标动作名。

parameters

目标动作的调用参数,可以通过 Yaf_Request_Abstract::getParam() 获取。

返回值

成功时返回 true,失败时返回 false / null

示例

示例 #1 Yaf_Controller_Abstract::forward() 示例

<?php
class IndexController extends Yaf_Controller_Abstract
{
    public function indexAction() {
        $logined = $_SESSION["login"];
        if (!$logined) {
            $this->forward("login", array("from" => "Index")); // 转发到 login 动作
            return false; // 这一点很重要:结束当前流程,
                          // 并告诉 Yaf 不要自动渲染
        }

        // 其他处理
    }

    public function loginAction() {
        echo "login, redirected from ", $this->_request->getParam("from") , " action";
    }
}
?>

以上示例的输出类似于:

login, redirected from Index action

参见

添加备注

用户贡献的备注

此页面尚无用户贡献的备注。
To Top