Php 如何使用Symfony打印我的购物车中的产品信息
在我的数据库“Shoppin购物车系统””中,我有4个表: “购物车”、“购物车产品”、“用户”和“产品”我想获得当前用户购物车并打印产品,但不仅要打印产品名称,还要打印完整的特征,即名称、价格、图像和数量 以下是我的CartController中的函数listCartAction():Php 如何使用Symfony打印我的购物车中的产品信息,php,symfony,Php,Symfony,在我的数据库“Shoppin购物车系统””中,我有4个表: “购物车”、“购物车产品”、“用户”和“产品”我想获得当前用户购物车并打印产品,但不仅要打印产品名称,还要打印完整的特征,即名称、价格、图像和数量 以下是我的CartController中的函数listCartAction(): /** * @Route("/cart/show/{id}", name="cart_list") */ public function listCartAction($id) { $cart =
/**
* @Route("/cart/show/{id}", name="cart_list")
*/
public function listCartAction($id)
{
$cart = $this->getDoctrine()->getRepository('AppBundle:CartProduct')->find($id);
$cartProducts = $cart->getProduct();
return $this->render('cart/cart.view.html.twig', array(
'cart' => $cartProducts
));
}
和细枝模板:
`{% extends 'base.html.twig' %}
{% block body %}
<div style="text-align: center;">
<h1>Products In My Cart</h1>
</div>
{% for c in cart %}
<h1>{{ c.product }}</h1>
{% endfor %}
{% endblock %}`
`{%extends'base.html.twig%}
{%block body%}
我的购物车中的产品
{购物车%中的c为%1}
{{c.product}}
{%endfor%}
{%endblock%}`
购物车实体:`
<?
php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Cart
*
* @ORM\Table(name="cart")
* @ORM\Entity(repositoryClass="AppBundle\Repository\CartRepository")
*/
class Cart
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\User")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
private $userId;
/**
* @var \DateTime
*
* @ORM\Column(name="date_created", type="datetime")
*/
private $dateCreated;
/**
* @var \DateTime
*
* @ORM\Column(name="date_updated", type="datetime")
*/
private $dateUpdated;
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set userId
*
* @param integer $userId
*
* @return Cart
*/
public function setUserId($userId)
{
$this->userId = $userId;
return $this;
}
/**
* Get userId
*
* @return int
*/
public function getUserId()
{
return $this->userId;
}
/**
* Set dateCreated
*
* @param \DateTime $dateCreated
*
* @return Cart
*/
public function setDateCreated($dateCreated)
{
$this->dateCreated = $dateCreated;
return $this;
}
/**
* Get dateCreated
*
* @return \DateTime
*/
public function getDateCreated()
{
return $this->dateCreated;
}
/**
* Set dateUpdated
*
* @param \DateTime $dateUpdated
*
* @return Cart
*/
public function setDateUpdated($dateUpdated)
{
$this->dateUpdated = $dateUpdated;
return $this;
}
/**
* Get dateUpdated
*
* @return \DateTime
*/
public function getDateUpdated()
{
return $this->dateUpdated;
}
}
考虑到您的实体和映射是正确的,您需要返回购物车
实体,而不是购物车产品
。请记住,您可以使用symfony的参数转换器,如下所示:
/**
* @Route("/cart/show/{id}", name="cart_list")
*/
public function listCartAction(Cart $cart) //Remember to import the Cart class!
{
return $this->render('cart/cart.view.html.twig', array(
'cart' => $cart
));
}
细枝:
细枝:
{%extends'base.html.twig%}
{%block body%}
我的购物车中的产品
{%用于cartProducts%中的cp}
{{cp.product.name}
{{cp.product.price}}
{{cp.quantity}}
//在此处呈现其他产品属性。。。
{%endfor%}
{%endblock%}
我的CartProduct中有getProducts()函数,所以我使用CartProduct$Cart代替Cart$Cart。无论如何,当我尝试在twig中使用p.name时,它抛出了这样一个问题:AppBundle\Entity\CartProduct对象未找到。因此,您的实体和映射可能是错误的。你应该在你的Cart
实体中有一个getProducts()
,而不是在CartProduct
中。我编辑了我的问题,现在你可以看到我的两个实体了,我想它们不是wrong@RumenPanchev在检查您的实体代码后,我编辑了我的答案。输出为空,没有显示任何内容。我无法理解这个方法是什么find->findByCart($id)@雷南·塔兰托
/**
* @Route("/cart/show/{id}", name="cart_list")
*/
public function listCartAction(Cart $cart) //Remember to import the Cart class!
{
return $this->render('cart/cart.view.html.twig', array(
'cart' => $cart
));
}
{% extends 'base.html.twig' %}
{% block body %}
<div style="text-align: center;">
<h1>Products In My Cart</h1>
</div>
{% for p in cart.products %}
<h1>{{ p.name }}</h1>
<p>{{ p.price }}</p>
//Render other products properties here...
{% endfor %}
{% endblock %}
/**
* @Route("/cart/show/{id}", name="cart_list")
*/
public function listCartAction($id)
{
$cartProducts = $this->getDoctrine()->getRepository('AppBundle:CartProduct')
->findByCart($id);
return $this->render('cart/cart.view.html.twig', array(
'cartProducts' => $cartProducts
));
}
{% extends 'base.html.twig' %}
{% block body %}
<div style="text-align: center;">
<h1>Products In My Cart</h1>
</div>
{% for cp in cartProducts %}
<h1>{{ cp.product.name }}</h1>
<p>{{ cp.product.price }}</p>
<p>{{ cp.quantity }}</p>
//Render other products properties here...
{% endfor %}
{% endblock %}