2

我希望有人可以帮助我解决这个问题。

我在 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;
   }
}

如您所见,我不知道如何更改 $response 值,尤其是“content_area”和“Header_Title”。

谢谢。

4

2 回答 2

0

简单的答案是:你不能这样做,因为 render 方法返回 Response 对象和准备服务的 html。换句话说 - 当你从渲染方法中得到你的响应时,树枝的工作就完成了。

很难说什么是最适合您的解决方案,因为我猜您发布的示例不是真实的,而只是简化的。

例如,如果您的两个操作将生成相同的页面,只有标题和页脚不同 - 使用 twig 的继承而不是控制器继承,并将这些文字放在模板中。

另一方面 - 如果这些东西是由逻辑生成的,使用适当的“逻辑”服务来服务它们,那么你就不再需要控制器继承了。

如果我的回答对您来说还不够,请告诉更多您正在努力实现的目标,我会尝试以更详细的方式帮助您。

于 2013-05-20T18:36:55.703 回答
0

您需要将模板继承与树枝一起使用。

这样,您就可以为扩展控制器定义具有所需标题的块。正如 cyprian 所说,你需要移动这个逻辑

于 2013-05-21T14:11:02.037 回答