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()
}
}
能不能在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()
}
}