Symfony通过服务而不是在控制器

时间:2015-11-02 12:10:49

标签: php symfony

我实际上正在努力解决如何提问我的问题,希望很清楚。我正在尝试做的是在使用特定服务时向视图发送其他信息,其他方面让视图按原样呈现。所以我走了。

在symfony中,一般来说,当你想渲染一个视图时,你就是这样做的

return $this->render(
    'ExampleBundle:View.html.twig',
    array(
        'form' => $form->createView(),
        'example' => $example
    )
);

是否可以在实际呈现视图之前通过服务向此render()添加其他参数,例如,我希望'example' => $example来自服务的上述代码

当然,我总是可以在控制器内调用服务,$example数据将被分配给发送到视图的example参数

$example = $this->get('calculations')->TotalTax();//call to a custom service i created

但我要问的是,如果在服务中我可以控制/覆盖视图或发送到视图的参数。

因此,如果正在使用该服务,则将发送到视图的参数进行最小化,或者将所有视图一起更改为其他方式,让视图按原样呈现。

1 个答案:

答案 0 :(得分:0)

如果您希望服务选择要渲染的视图和数据,您可以返回服务,例如

return array(
    'view' => 'ExampleBundle:View.html.twig',
    'data' => array(
         'example' => $example,
    )
);

并在控制器中:

$toRender = $this->get('calculations')->TotalTax();
return $this->render(
    $toRender['view'],
    array_merge(
        $toRender['data'],
        array('form' => $form->createView(),)
    )
);

但我认为这不是一个好的解决方案。