如何更改调用的操作,或将内部操作重定向到另一个操作


Yii2 how to change called action, or redirect action internal to another action

我想在一个控制器和函数init(){}内改变被调用的动作(请求的动作)。我的意思是,如果有人调用"www.mywebsite.com/myctrl/action1",我想在init函数内调用action2,而不是重定向页面和更改url。

2-是否有可能在init函数中做出响应,并停止调用请求的操作?

致以最亲切的问候高尼姆

为什么不直接在配置文件中捕获URL并手动将其重定向到新操作?它应该工作得很好,它会完成你想要的。

http://www.yiiframework.com/doc - 2.0 -/-指导-运行- url handling.html

我知道这不是你想要的方法,但是这有什么好处呢?

编辑:

在你告诉我你需要做什么之后,你真的不应该这样做。您应该使用AccessControl http://www.yiiframework.com/doc-2.0/yii-filters-accesscontrol.html或控制器的beforeAction http://www.yiiframework.com/doc-2.0/yii-base-controller.html#beforeAction()-detail。

对于第二个选项,您可以抛出一个错误,并让Yii为您处理它。第一个也差不多。

这个问题通常通过使用Apache的mod_rewrite或类似的方法来解决。根本不需要更改应用程序。它比yii2所提供的要灵活得多,而且速度更快,因为web服务器是本地完成的。

该技术通常用于迁移功能、支持不同的环境、共享资源等。