lep*_*pix 1 php controller routes symfony
我相信Symfony2的流程如下:请求 - >控制器 - >响应.
实际上,使用此代码,MessageController不返回响应对象,而只返回另一个Controller的值:
MessageController的Compagny/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)
InterfaceController的Compagny/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)
这段代码是不好的做法吗?
是.因为如果您稍后决定直接使用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)
| 归档时间: |
|
| 查看次数: |
438 次 |
| 最近记录: |