从另一个控制器调用函数

时间:2014-02-18 01:00:44

标签: symfony

我有两个控制器

DefaultController

class DefaultController extends Controller
{
    public function indexAction()
    {

ApiController

class ApiController extends Controller
{
    public function getCategoryAction()
    {

现在我想从我的DefaultController调用getCategoryAction。

这是不可能的,或者我该怎么做?

4 个答案:

答案 0 :(得分:1)

Symfony2中有forwarding。所以,你可以这样做:

class DefaultController extends Controller
{
    public function indexAction()
    {
        // @var Response $categoryListResponse
        $categoryListResponse = $this->forward('YourBundle:Api:getCategory');
        // ... further modify the response or return it directly
        return $categoryListResponse;
    }
}

其中$categoryListResponseResponse类型并表示HTTP响应。所以你可以从这个回复中$categoryListResponse->getContent()

答案 1 :(得分:0)

您可以将控制器配置为服务,然后使用

$this->forward('controller.service.name')->methodOnTheController()

答案 2 :(得分:0)

您可以创建自己的服务,然后从所有控制器中调用它们

请参阅Symfony service container

答案 3 :(得分:0)

您可以像这样扩展ApController控制器:

class ApiController extends DefaultController
{
    public function yourAction()
    {
         $this->getCategoryAction();
    }
}

甚至更好地创建一个MyClass类(如果将重用getCategoryAction)注册为服务

这一切都取决于你想在最后实现的目标