我希望有人能帮我解决这个问题。
我在Symfony 2结构中有两个控制器,第二个覆盖第一个。
这里是父控制器的代码:
<?php
namespace WebSender'MainPageBundle'Controller;
use Symfony'Bundle'FrameworkBundle'Controller'Controller;
class DefaultController extends Controller
{
public function indexAction()
{
$Header_Title = "Titolo 1";
$content_area = "Contenuto di prova 1!";
$Header_Welcome = "Benvenuto utente: ";
$username = "nome utente";
$Header_Logout = "Logout";
return $this->render('WebSenderMainPageBundle:Default:index.html.php', array('Header_Title' => $Header_Title, 'content_area' => $content_area, 'Header_Welcome' => $Header_Welcome, 'username' => $username, 'Header_Logout' => $Header_Logout));
}
}
第二个控制器:
<?php
namespace WebSender'MainPageBundle'Controller;
use Symfony'Bundle'FrameworkBundle'Controller'Controller;
use Symfony'Component'HttpFoundation'Response;
use WebSender'MainPageBundle'Controller'DefaultController as BaseController;
class GridController extends BaseController
{
public function indexAction()
{
$Header_Title = "Titolo 2";
$content_area = "Contenuto di prova 2!";
$response = parent::indexAction();
// return $this->render('WebSenderMainPageBundle:Default:index.html.php', array('Header_Title' => $Header_Title, 'content_area' => $content_area, 'Header_Welcome' => $Header_Welcome, 'username' => $username, 'Header_Logout' => $Header_Logout));
return $response;
}
}
正如你所看到的,我不知道如何改变$响应值,特别是"content_area"answers"Header_Title"。
谢谢。
简单的答案是:你只是不能这样做,因为渲染方法返回响应对象与准备服务的html。换句话说,当你从渲染方法中得到响应时,树枝的工作就完成了。
很难说什么对你来说是最好的解决方案,因为我猜你发布的例子不是真实的,只是简化的。
例如,如果你的两个操作将生成相同的页面,只有标题和页脚不同-使用twig的继承而不是控制器继承,并把这些文字放在模板中。
另一方面,如果这些东西是由逻辑生成的,使用适当的"逻辑"服务来为它们服务,那么你就不再需要控制器继承了。
如果我的回答对你来说还不够,请告诉我更多你想要达到的目标,我会尽量以更详细的方式帮助你。
你需要在twig中使用模板继承。
这样你就可以用你想要的扩展控制器的标题来定义block。正如cyprian所说,您需要移动这个逻辑