我有两个控制器
DefaultController
class DefaultController extends Controller
{
public function indexAction()
{
ApiController
class ApiController extends Controller
{
public function getCategoryAction()
{
现在我想从我的DefaultController调用getCategoryAction。
这是不可能的,或者我该怎么做?
答案 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;
}
}
其中$categoryListResponse
是Response类型并表示HTTP响应。所以你可以从这个回复中$categoryListResponse->getContent()
。
答案 1 :(得分:0)
您可以将控制器配置为服务,然后使用
$this->forward('controller.service.name')->methodOnTheController()
答案 2 :(得分:0)
您可以创建自己的服务,然后从所有控制器中调用它们
答案 3 :(得分:0)
您可以像这样扩展ApController控制器:
class ApiController extends DefaultController
{
public function yourAction()
{
$this->getCategoryAction();
}
}
甚至更好地创建一个MyClass类(如果将重用getCategoryAction)注册为服务
这一切都取决于你想在最后实现的目标