Как отобразить массив контроллеров в шаблоне веточки

product.html.twig:

<ul id="navigation">
<li>
<a href="<?php echo product.getId() ?>">
<?php echo product.getDescription() ?>
</a>
</li>
</ul>

Метод действия контроллера содержит:

public function showAction($id = 5)
{
$product = $this->getDoctrine()
->getRepository('AppBundle:Product')
->find($id);

if (!$product) {
throw $this->createNotFoundException(
'No product found for id '.$id
);
}
else
{
return $this->render('default/productItem.html.twig', array(
'id'=> $id,
'name' => $name));
}
}

Я не могу увидеть вывод в списке

0

Решение

Вы должны использовать синтаксис Twig.

<ul id="navigation">
<li>
<a href="/page.php?id={{ product.getId() }}">
{{ product.getDescription() }}
</a>
</li>
</ul>

В вашем случае ваш вклад должен быть объектом. С функциями getId() а также getDescription(),

В вашем коде вы можете удалить «получить» и писать только {{ product.id }} например.

1

Другие решения

Предложил бы некоторые изменения в вашем контроллере:

В вашем контроллере вы жестко закодировали свой $id параметр «5». Вероятно, лучше использовать аннотацию маршрутизации и вместо этого иметь дополнительный параметр. Используйте defaults жестко закодировать любое значение по умолчанию.

Кроме того, вместо $idЯ предлагаю вам назвать это $productIDТаким образом, вы знаете, что это для Product Entity, и чтобы отличить его от того, что вы передаете в массиве (в качестве параметра) на ваш контроллер ветки.

Также в вашем примере кода вы показываете передачу параметра id а также name, но во-первых $name нигде не определено, а $id это то, что вы передаете в качестве параметра в контроллер, но затем в файле ветки вы не показываете с помощью одного из name или же id совсем! Плюс вы рендер productItem.html.twigно над постом ты это называешь product.html.twig, Так это другой файл?

Когда вы отправляете вопрос в Stackoverflow, убедитесь, что все ясно.

Вот пример того, как вы можете изменить код контроллера в соответствии с моими предложениями выше:

/**
* @Route("/showproduct/{productID}",
*      defaults={"productID" = 0},
*      name="showproduct
*/
public function showAction($productID)
{
$product = $this->getDoctrine()
->getRepository('AppBundle:Product')
->find($productID);

if (!$product) {
throw $this->createNotFoundException(
'No product found for id '.$productID
);
}
else
{
return $this->render('default/productItem.html.twig', array(
'product'=> $product,
));
}
}

Тогда в вашем файле ветки (это productItem.html.twig???) тогда вот так:

<ul id="navigation">
<li>
<a href="{{ product.getId }}">
{{ product.getDescription }}
</a>
</li>
</ul>

Надеюсь, поможет!

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector