Это моя первая попытка сохранить информацию о продукте в mysql. Я заранее извиняюсь, если код не в лучшей форме, я все еще участвую. Это мой registration.html.twigSymfony3 пытается сохранить в db с формами и 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 %}
У меня также есть продукт класса лица с сеттеров & добытчиками, не собирается включать его здесь из-за количества кода.
Это мой ProductForm:
class ProductForm extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('pName')
->add('pPrice')
->add('pDescription')
;
}
}
и здесь является частью моего контроллера для /вставить страницу:
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
, но, как упоминалось ранее, он жалуется, что это string
, а не array
. Может ли кто-нибудь просмотреть мой код и дать отзыв о том, что не так? Im действительно потерял в данный момент и не уверен, что делать дальше или как это решить. Заранее спасибо.
Спасибо за ваш ответ, что вы имеете в виду 'name' атрибуты? Я пытался понять это, но я не мог. Я также изменил переменную '$ product' на ту, которую вы указали, но я все равно получаю ту же ошибку, заявляя, что она ожидает массив или объект и полученную строку. –
'' - атрибуты в этом элементе: 'type',' id' и 'placeholder'. Поле формы, такое как 'input' с типом' text', нуждается в атрибуте 'name', под которым значение будет отправлено на сервер с запросом' POST'. Например, значение с этим полем: '' будет позже доступно в объекте '$ request', например:' $ request-> request-> get ('theFieldName') ', а также будет присутствовать в' $ _POST ['theFieldName'] '. –