бы предложить некоторые изменения в контроллер:
В контроллере вы жесткий код вашего параметра $id
на «5' Это, вероятно, лучше использовать маршрутизацию аннотации и иметь дополнительный параметр вместо Используйте defaults
Кодирует любого.. значение по умолчанию.
Кроме того, вместо $id
, я предлагаю вам назвать это $productID
, так что вы знаете, что это за Entity продукта, и отличить его от того, что вы передаете в массиве (в качестве параметра) к контроллеру прута
A lso в вашем примере кода вы показываете, проходящий в параметре 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>
Надеюсь, это поможет!
Это массив, который держит объект? Является ли '$ product' объектом? –
Почему бы и нет с 'href =" {{product.id}} "' – Matteo