检索会话值并传递给实体属性

时间:2017-07-25 14:30:24

标签: symfony

我想检索我在会话中存储的每个项目的数量并将其存储在数据库中。

如何在会话中检索数量并在数据库持久性期间传递给我的文章实体的数量属性?

例如本文:

enter image description here

(id 4,数量2)。 我会将 2 存储在我的文章实体的数量属性中。 我试过了:

class ContentEditable extends React.Component {
  constructor(props) {
    super(props);
    this.handleInput = this.handleInput.bind(this);
  }

  handleInput(event) {
    let html = event.target.innerHTML;
    if (this.props.onChange && html !== this.lastHtml) {
      this.props.onChange({ target: { value: html, name: this.props.name } });
      this.lastHtml = html;
    }
  }

  render() {
    return (
      <span
        contentEditable="true"
        onInput={this.handleInput}
        className={"auto " + this.props.className}
        dangerouslySetInnerHTML={{ __html: this.props.value }}
      />
    );
  }
}
export default ContentEditable;

<ContentEditable
  value={this.state.name}
  onChange={e => {
    this.setState({ name: e.target.value });
  }}
/>;

我有这个错误:

执行'INSERT INTO文章....... {“4”:“2”} 时发生异常 注意:数组到字符串转换

$article->setQuantity($session->get('panier'));

在会话中添加文章:

  /**
     * @Route("/payment", name="payment")
     */
    public function paymentAction(Request $request)
    {
        $session = $request->getSession();

        $produits = $this->getDoctrine()->getManager()->getRepository('AppBundle:Stock')->findArray(array_keys($session->get('panier')));

        $commande = $session->get('commande');

        var_dump($session->get('panier'));

        if ($request->isMethod('POST')) {
            $token = $request->get('stripeToken');

            \Stripe\Stripe::setApiKey($this->getParameter("private_key"));

            \Stripe\Charge::create(array(
                "amount" => $commande->getTotal() * 100,
                "currency" => "EUR",
                "source" => $token,
                "description" => ""
            ));

            foreach ($produits as $produit) {

                $article = new Article();
                $article->setTitle($produit->getStock()->getTitle());
                $article->setContent($produit->getStock()->getContent());
                //problem here
                $article->setQuantity($session->get('panier'));
                //
                $article->setPrice($produit->getPrice());

                $commande->addArticle($article);

                $em = $this->getDoctrine()->getManager();
                $em->persist($commande);
                $em->flush();
            }

            return $this->redirectToRoute('confirmation');

        }
        return $this->render(':default:payment.html.twig', array(
            'commande' => $commande,
            'panier' => $session->get('panier'),
            'produits' => $produits,
            'public_key' => $this->getParameter("public_key"),
        ));
    }

1 个答案:

答案 0 :(得分:1)

更新: 如果$id中的addArticlelAction是产品ID,则:


    foreach ($produits as $produit) {

                $article = new Article();
                $article->setTitle($produit->getStock()->getTitle());
                $article->setContent($produit->getStock()->getContent());
                //problem here
                $article->setQuantity($session->get('panier')[$produit->getId()]);
                //
                $article->setPrice($produit->getPrice());

                $commande->addArticle($article);

                $em = $this->getDoctrine()->getManager();
                $em->persist($commande);
                $em->flush();
            }

应该有效,因为目前您有两种产品(产品1的ID为1,产品4的ID为4)。当您致电/ shop / add / {id}时,您将添加$session->get('panier')[1]$session->get('panier')[4]数量。所以,当你在foreach(存储在DB中)时,你需要访问索引1和索引4($produit->getId()