如何在 Laminas 框架构造函数中获取动作名称

How to get action name in Laminas framework constructor

在动作中获取动作名称很简单 - 我可以使用“actionName”参数。 但是有没有办法在Controller的构造函数中获取动作名称?

    public function __construct()
    {
        parent::__construct();
        $action = $this->params('actionName');
    }

控制器中的构造函数-Class 还不知道调用了哪个动作。但是,您可以扩展 AbstractActionController.php 中的 onDispatch 方法,它被称为 before 任何动作被调用但 after __construct()-方法被调用。像这样:

<?php
...
use Laminas\Mvc\MvcEvent; # <-- add this

class YourController extends AbstractActionController
{
    
    public function onDispatch(MvcEvent $e)
    {
        $this->action = $this->params()->fromRoute('action');

        // Or somethink like e.g.:
        if ($this->params()->fromRoute('action') == 'foo') {
          // do something
        }

        return parent::onDispatch($e);
        
    }
}