【问题标题】:Normal function in Extbase controllerExtbase 控制器中的正常功能
【发布时间】:2015-03-08 23:01:37
【问题描述】:

是否可以在控制器中编写正常功能?

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

这怎么可能?

如果我做一个正常的

private function xyz () {}

我收到了 function not found 错误。

【问题讨论】:

  • 如果下面的答案对您没有帮助,请显示更多代码。
  • 请花一些时间来提供格式正确的问题以及更好的拼写和标点符号。请记住,有一天另一个人会遇到同样的问题,并希望从您的问题和答案中受益。不要依赖别人来修复你的帖子,自己做一个好榜样。如果您使用“typo3”标记帖子,则无需在帖子标题中使用 TYPO3。

标签: typo3 typo3-6.2.x


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 感谢这个提示我知道这种可能性,但它不像在 java 中那样我只能扩展另一个类吗?
  • 是的,确实如此,但由于 AbstractController 本身扩展了 \TYPO3\CMS\Extbase\Mvc\Controller\ActionController,您将像往常一样拥有 TYPO3 上下文的所有方法和属性。
【解决方案2】:

您应该使用protected,而不是private,除非您有充分的理由这样做。无论如何,定义其他方法对我来说很好。

你需要用$this->xyz()调用这个方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多