在Symfony2上,使用Controller返回另一个Controller的非响应值是不好的做法吗?

lep*_*pix 1 php controller routes symfony

我相信Symfony2的流程如下:请求 - >控制器 - >响应.

实际上,使用此代码,MessageController不返回响应对象,而只返回另一个Controller的值:

MessageControllerCompagny/MessageBundle:

<?php
class MessageController extends Controller
{
    public function getAction()
    {
        $message = "I display this message";
        return $message; // It's not a new Response object, it returns only a value
    }
}
Run Code Online (Sandbox Code Playgroud)

InterfaceControllerCompagny/InterfaceBundle:

<?php
class InterfaceController extends Controller
{
    public function indexAction()
    {
        $data = $this->forward('MessageBundle:Message:get');
        $response = new Response($data);
        return $response; // This one return a Response object
    }
}
Run Code Online (Sandbox Code Playgroud)

这段代码是不好的做法吗?

mez*_*eze 6

是.因为如果您稍后决定直接使用Message :: get,您将无法在不更改InterfaceController的情况下执行或修复它.

我建议这个:

class MessageController extends Controller
{
    public function getAction()
    {
        $message = "I display this message";
        return $this->createResponse($message);
    }
}
class InterfaceController extends Controller
{
    public function indexAction()
    {
        $forwardedResponse = $this->forward('MessageBundle:Message:get');
        $response = new Response($forwardedResponse->getContent());
        return $response; // This one return a Response object
    }
}
Run Code Online (Sandbox Code Playgroud)