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));
}
}
Я не могу увидеть вывод в списке
Вы должны использовать синтаксис Twig.
<ul id="navigation">
<li>
<a href="/page.php?id={{ product.getId() }}">
{{ product.getDescription() }}
</a>
</li>
</ul>
В вашем случае ваш вклад должен быть объектом. С функциями getId()
а также getDescription()
,
В вашем коде вы можете удалить «получить» и писать только {{ product.id }}
например.
Предложил бы некоторые изменения в вашем контроллере:
В вашем контроллере вы жестко закодировали свой $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>
Надеюсь, поможет!