【问题标题】:Yii2: How to redirect on invalid routes?Yii2:如何重定向无效路由?
【发布时间】:2019-04-26 08:38:30
【问题描述】:

如果路由无效(没有请求的控制器/操作),我一般不会显示错误页面,而是将用户重定向到起始页面。为了使它听起来重定向应该只发生在“正常”页面请求上。虽然AJAX calls 也可能无效,但我不想在此处向浏览器发送重定向。

我怎样才能有效地做到这一点?

【问题讨论】:

    标签: php redirect yii2 url-routing yii2-urlmanager


    【解决方案1】:

    您可以覆盖ErrorAction class 并将实现必要的逻辑。例如:

    class MyErrorAction extends \yii\web\ErrorAction
    {
    
        public $redirectRoute;  
    
        public function run()
        {
            if (!Yii::$app->getRequest()->getIsAjax()) {
                Yii::$app->getResponse()->redirect($this->redirectRoute)->send();
                return;
            }
            return parent::run();
        }
    }
    

    在它之后,你应该在控制器中添加这个动作并配置它

    class SiteController
    {
        public function actions()
        {
            return [
                'error' => [
                    'class' => MyErrorAction::class
                    'redirectRoute' => 'site/my-page'
                ],
            ];
        }
    }
    

    并在错误处理程序中配置the route of error action

    'errorHandler' => [
        'errorAction' => 'site/error',
    ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-19
      • 1970-01-01
      • 2018-01-31
      • 2023-03-17
      相关资源
      最近更新 更多