簡體   English   中英

Symfony3嘗試使用表單和樹枝將其保存到數據庫中

[英]Symfony3 trying to save into db with forms and twig

這是我第一次嘗試將產品信息存儲到mysql中。 如果代碼不是最好的形式,我事先表示歉意,我仍在學習。 這是我的registration.html.twig

{% extends 'base.html.twig' %}

    {% block stylesheets %}
        <link href="{{ asset('bundles/framework/css/myStyle.css') }}" rel="stylesheet" />
    {% endblock %}

{% block title %}Create your product {% endblock %}


{% block body %}
    <div id="container">
    <h1 id="header">Create your product and store it in the database!</h1>
    </div>

    <form method="POST" id="registrationForm">
    <input type="text" id="pName" placeholder="Product name">
        <input type="text" id="pPrice" placeholder="Product price"> <br>
        <textarea id="pDescription" placeholder="Product description"></textarea>
    </form>
    <input type="submit" value="Submit" >

{% endblock %}

我也有帶有setters&getters的Product實體類,由於代碼量大,所以這里不包括它。

這是我的ProductForm

class ProductForm extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
       $builder
           ->add('pName')
           ->add('pPrice')
           ->add('pDescription')
       ;
    }
}

這是我的/ insert頁面控制器的一部分:

public function createAction()
    {
        $product = 'AppBundle\Entity\Product';
        $form = $this->createForm(ProductForm::class, $product);

        if($form->isValid())
        {
            $em= $this->getDoctrine()->getManager();
            //Save into database code should go here...
        }
    }

對於初學者,它抱怨Expected argument of type "object, array or empty", "string" given ,我猜想它來自控制器,在控制器中我嘗試將具有指定路徑的$product變量傳遞給實體類。 在文檔中,這部分非常令人困惑。 它說$product = ...讓我createForm ,我設法理解這是實體類的路徑,應將其傳遞給createForm方法,但是如前所述,它抱怨它是string ,而不是array 有人可以查看我的代碼並提供有關錯誤的反饋嗎? 我目前確實迷失了方向,不確定下一步該怎么辦或如何解決。 先感謝您。

  1. 您的表單字段未設置name屬性,這意味着不會從中發布任何數據。

  2. 在控制器中, $product應該是AppBundle\\Entity\\Product的實例,而不僅僅是類名:

     $product = new \\AppBundle\\Entity\\Product(); 
  3. 表單不會自動從HTTP請求中檢索數據(由於第1點而沒有),您必須手動處理請求:

     // inject the request here public function createAction(\\Symfony\\Component\\HttpFoundation\\Request $request) { // ... $form->handleRequest($request); if ($form->isValid()) { // ... } } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM