Extbase 控制器中的正常功能

Normal function in Extbase controller

能不能在controller中写一个普通的函数?

我想稍微清理一下我的代码,所以我想为重复的代码段写一些方法,但我不想创建一个特殊的 class。

这怎么可能?

如果我做一个正常的

private function xyz () {}

我收到一个 function not found 错误。

您应该使用 protected,而不是 private,除非您有充分的理由这样做。不管怎样,定义额外的方法对我来说很好。

您需要使用$this->xyz()调用此方法。

如果您想跨控制器共享方法,一个好的解决方案可能是使用抽象 class:

abstract class AbstractController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController{
    protected function myFunction(){}
}

您的控制器继承自抽象 class 并将拥有所有可用方法:

class FirstController extends AbstractController {
    public function firstAction(){
        // has access to myFunction()
    }
}

class SecondController extends AbstractController {
    public function secondAction(){
        // has access to myFunction()
    }
}