Symfony добавляет параметры для render () через сервис, а не через контроллер

1

Я действительно борюсь с тем, как задать свой вопрос, надеюсь, это понятно. То, что я пытаюсь сделать, - это отправить дополнительную информацию в представление, когда конкретная служба используется другим образом, позволяя визуализировать представление как есть. Итак, я пойду.

В symfony, вообще говоря, когда вы хотите сделать вид, вот как вы это делаете

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

Можно ли добавлять дополнительные параметры через службу к этой функции render() непосредственно перед визуализацией представления, например, в приведенном выше коде. Мне нужен 'example' => $example from service.

Теперь, конечно, я всегда могу вызвать службу внутри контроллера, а данные в $example будут присвоены параметру example, отправляемому в представление

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

Но то, что я прошу, заключается в том, что если в службе я могу контролировать/перезаписывать представление или параметры, отправляемые в представление.

Поэтому, если услуга используется minupalate, параметры отправляются в представление или изменяют представление вместе, другие мудрые позволяют визуализировать представление как есть.

  • 0
    Мне не ясно, что вы подразумеваете под «если в службе». Какой сервис?
  • 0
    Это то, что я имею в виду под служением . У меня есть специальный сервис, который я создал для выполнения некоторых налоговых расчетов, поэтому в контроллере, где я вызываю сервис, мне нужно передать дополнительную информацию для просмотра, я могу получить информацию из сервиса и затем передать ее контроллеру просто отлично, но я спрашиваю, могу ли я через службу переопределить представление, которое будет отображено, поскольку это будет идеальным решением. Отвечает ли это на ваш вопрос?
Показать ещё 1 комментарий
Теги:

1 ответ

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(),)
    )
);

но я думаю, что это нехорошее решение.

  • 0
    Спасибо, но это не то, что я ищу :)
  • 0
    Не понятно, что вы ищете

Ещё вопросы

Сообщество Overcoder
Наверх
Меню