Я использую вкладки JavaScript для визуализации различных макетов, соответствующих различным представлениям с различными формами.
У меня есть основной маршрут следующим образом:
/**
* @Route("/my_ingredients", name="my_ingredients")
* @Method("GET")
* @Template("MarketPlace/UserIngredient/my_ingredients.html.twig")
*/
public function myIngredientsAction()
{
return array();
}
В макете myingredients у меня есть следующее:
{% if ingredient_form is defined %}
{% include 'MarketPlace/Product/create_ingredient.html.twig' %}
{% else %}
{{ render(controller('AppBundle:MarketPlace/Product:createIngredient')) }}
{% endif %}
В действии createIngredient у меня есть:
/**
* @Route("/create_ingredient", name="create_ingredient")
* @Method({"POST", "GET"})
* @Template("MarketPlace/Product/create_ingredient.html.twig")
* @param Request $request
* @return array|\Symfony\Component\HttpFoundation\RedirectResponse
*/
public function createIngredientAction(Request $request)
{
$productManager = $this->get('product_manager');
$ingredient = new Product();
$ingredientForm = $productManager->getIngredientCreateForm($ingredient);
$formManager = $this->get('form_manager');
if ($request->getMethod()=='POST')
{
if ($formManager->handleRequestAndValidatePersist($ingredientForm,$ingredient))
{
$productManager->saveUserIngredientOnCreateIngredient($ingredient);
return $this->redirect($this->generateUrl('my_ingredients')."#choose");
}
}
return $this->render(
"MarketPlace/Product/create_ingredient.html.twig",
array(
'ingredient_form' => $ingredientForm->createView()
)
);
}
Наконец, в макете create_ingredient у меня есть только:
{{ form(ingredient_form) }}
{{ form_stylesheet(ingredient_form) }}
{{ form_javascript(ingredient_form) }}
Почему это порождает бесконечный цикл? У меня сложилось впечатление, что я правильно звоню GET->myIngredientsAction->GET=>{{ render(controller('AppBundle:MarketPlace/Product:createIngredient')) }}->GET=>render("MarketPlace/Product/create_ingredient.html.twig")
…
Любая помощь будет очень ценится!
Эта ошибка возникает только в том случае, если установлен xdebug, и обычно используется с максимальным значением по умолчанию, равным 100 (без xdebug нет ограничения).
xdebug.max_nesting_level = 300
в вашем php.ini все исправят
Других решений пока нет …