如何从其他控制器获取页面的一部分

时间:2012-01-13 07:54:36

标签: php symfony

我的网站我有一些内容可以投票(+/-)。当所有内容都有自己的选民时,现在工作正常。 现在我正在寻找一种方法来创建一个带有实体的单一投票包(votedModel,votedId,user,vote)。 基本上捆绑准备好了。我的问题是如何使用它。我希望能够做到这样的事情:

class ... extends Controller {
    function showAction(Request $request,$id) {
        ...
        $voter=new Voter('myCOntentType',$id,$userid);

        ...
        return $this->render('...', array('voter'=>$voter->getVoter(),...))
    }
}

getVoter()会创建选民视图。

  • 但我知道如何开始。我试图以这种方式呼叫其他控制器,但无法创建选民表格。

  • 它适用于$voter=$this->forward('VoterbundleNewAction', array('id=>$id,'user'=>$user)->getContent();
    但这不是我的想法。

我认为我的做法完全错了,我可能需要将此作为服务。我无法找到自己的方式。

1 个答案:

答案 0 :(得分:2)

您可以在twig模板中使用include或render来获取其他模板的输出。因此,您可以创建一个包含投票系统HTML的模板(例如,voter.html.twig),在Twig中,在您需要选民的任何地方,您可以使用:

{% include "AcmeVoterBundle:Voter:voter.html.twig" %}

{% render "AcmeVoterBundle:Voter:voter" with {"item": item} %}

在第一个示例中,您只需包含另一个模板(另请参阅:http://symfony.com/doc/current/book/templating.html#including-other-templates),在后一种情况下,您实际执行控制器的另一个操作方法,并将其输出放入当前模板中(请参阅还:http://symfony.com/doc/current/book/templating.html#embedding-controllers