[英]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
。 有人可以查看我的代碼並提供有關錯誤的反饋嗎? 我目前確實迷失了方向,不確定下一步該怎么辦或如何解決。 先感謝您。
您的表單字段未設置name
屬性,這意味着不會從中發布任何數據。
在控制器中, $product
應該是AppBundle\\Entity\\Product
的實例,而不僅僅是類名:
$product = new \\AppBundle\\Entity\\Product();
表單不會自動從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.