Zend Framework - 重定向到不同模块中的 IndexController

发布于 2024-11-06 05:08:05 字数 961 浏览 11 评论 0原文

所有,

我在 Zend 的 mvc 框架中有以下项目设置。访问应用程序后,我希望用户重定向到“移动”模块,而不是转到“默认”模块中的 IndexController。我该怎么做?

-billingsystem
-application
    -configs
        application.ini
    -layouts
        -scripts
            layout.phtml
    -modules
        -default
            -controllers
                IndexController.php
            -models
            -views
            Bootstrap.php
        -mobile
            -controllers
                IndexController.php
            -models
            -views
            Bootstrap.php
Bootstrap.php
-documentation
-include
-library
-logs
-public
    -design
        -css
        -images
        -js
    index.php
    .htaccess

我的index.php有以下代码:

require_once 'Zend/Application.php';
require_once 'Zend/Loader.php';


$application = new Zend_Application(
  APPLICATION_ENV,
  APPLICATION_PATH . '/configs/application.ini'
);

$application->bootstrap()->run();

All,

I have the following project setup in Zend's mvc Framework. Upon accessing the application, I want the user to redirect to "mobile" module instead of going to IndexController in "default" module. How do I do that?

-billingsystem
-application
    -configs
        application.ini
    -layouts
        -scripts
            layout.phtml
    -modules
        -default
            -controllers
                IndexController.php
            -models
            -views
            Bootstrap.php
        -mobile
            -controllers
                IndexController.php
            -models
            -views
            Bootstrap.php
Bootstrap.php
-documentation
-include
-library
-logs
-public
    -design
        -css
        -images
        -js
    index.php
    .htaccess

My index.php has the following code:

require_once 'Zend/Application.php';
require_once 'Zend/Loader.php';


$application = new Zend_Application(
  APPLICATION_ENV,
  APPLICATION_PATH . '/configs/application.ini'
);

$application->bootstrap()->run();

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

み青杉依旧 2024-11-13 05:08:05

您有两个选择:

1- 通过编辑 application.ini 文件将 mobile 设置为应用程序的默认模块
resources.frontController.defaultModule = "mobile"

2-您可以创建一个插件来拦截每个请求并转发到相同的控制器和操作,但转发到移动模块

class Name_Controller_Plugin_mobile extends Zend_Controller_Plugin_Abstract {

    public function preDispatch(Zend_Controller_Request_Abstract $request) {

                $module = $request->getModuleName();
                $controller = $request->getControllerName();
                $action = $request->getActionName();
                if($module !== "mobile" || $module !== "error"){
                  return $request->setModuleName("mobile")->setControllerName("$controller")
                    ->setActionName("$action")->setDispatched(true);

                 }else{
                   return ;
                 }
    }
}

,并且不要忘记添加错误控制器到 if 子句,这样当应用程序抛出错误时,您就不会陷入神秘的循环,就是这样

you have two options :

1- set mobile as default module for your application by editing your application.ini file
resources.frontController.defaultModule = "mobile"

2- you can create a plugin that intercept every request and forward to the same controller and action but to the mobile module

class Name_Controller_Plugin_mobile extends Zend_Controller_Plugin_Abstract {

    public function preDispatch(Zend_Controller_Request_Abstract $request) {

                $module = $request->getModuleName();
                $controller = $request->getControllerName();
                $action = $request->getActionName();
                if($module !== "mobile" || $module !== "error"){
                  return $request->setModuleName("mobile")->setControllerName("$controller")
                    ->setActionName("$action")->setDispatched(true);

                 }else{
                   return ;
                 }
    }
}

and don't forget to add the error controller to the if clause so you don't end up with mysterious loop when your application throws an error , and that is it

蝶舞 2024-11-13 05:08:05

在控制器中,您可以使用

 _forward(string $action, 
          string $controller = null, 
          string $module = null, 
          array $params = null)

例如:

$this-_forward("index", "index", "mobile");

这将转到索引操作,移动模块的索引控制器,您也可以使用 null

$this-_forward(null, null, "mobile");

传递 null 将使用当前的操作和控制器。

希望有帮助。

From within a controller you you can use

 _forward(string $action, 
          string $controller = null, 
          string $module = null, 
          array $params = null)

For example:

$this-_forward("index", "index", "mobile");

This would go to the index action, index controller of the mobile module, you can also use null:

$this-_forward(null, null, "mobile");

Passing null will use the current action and controller.

Hope that helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文