отправка данных с контроллера на класс в symfony 3

117
10

Я пытаюсь получить данные из базы данных и перейти к выпадающему списку формы

это Entity, откуда я хочу получить данные, в частности столбца типа

<?php

namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;

/**
* @ORM\Entity(repositoryClass="AppBundle\Repository\TypesRepository")
* @ORM\Table(name="types")
*/
class Types
{

/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(name="idtype",type="integer")
*/
private $idtype;
/**
* @ORM\Column(type="string", length=100)
*/
private $type;

и это тип типа, который содержит форму, так как вы можете видеть, что я создал конструкцию, основанную на некотором интернет-черке, который я сделал, конструктор добавляет переданное значение к переменной, а затем вызывает в EntityType

class sell_form extends AbstractType
{

protected $cat;

public function __construct (Types $cat)
{
$this->cat = $cat;
}

public function buildForm(FormBuilderInterface $builder, array $options)
{

$builder

->add('categorie',EntityType::class,array(
"required"=>false,
'class' => 'AppBundle\Entity\Types',
'choices' => $cat
))

;
;
}
}

и, наконец, это контроллер, в котором я инициализирую переменную $ cat из базы данных с помощью функции репозитория

/**
* @Route("/Old/buy", name="old_buy")
*/
public function Old_buyAction()
{

return $this->render('/user_module/Old Views/Old_buy.html.twig');
}
/**
* @Route("/Old/sell", name="old_sell")
*@Method({"GET","POST"})
*/
public function Old_sellAction()
{
$cat = $this->getDoctrine()->getManager()->getRepository('AppBundle:Types')-
>tn();

/*line 122 */

$form = $this->createForm(new sell_form($cat));
//$form = $this->createForm(sell_form::class,$cat);
return $this->render("user_module/Old Views/old_sell.html.twig",array(
"myForm"=> $form->createView(),

));

это ошибка, которую он показал
Catchable Fatal Error: Argument 1 passed to 
AppBundle\Forms\sell_form::__construct() must be an instance of
AppBundle\Entity\Types, array given, called in
C...\OldController.php
on line 122 and defined'

Спасибо заранее

спросил(а) 2021-01-25T19:53:11+03:00 5 месяцев назад
1
Решение
99

$cat - массив AppBundle\Entity\Types. Вы передаете их в конструктор формы:

public function __construct (Types $cat)
{
$this->cat = $cat;
}

В настоящий момент ваш код ожидает, что $cat - это единственный экземпляр Types, поэтому он сбой:

AppBundle\Forms\sell_form :: __ construct() должен быть экземпляром AppBundle\Entity\Types, заданный массив

Вам нужно ожидать массив:

public function __construct (array $cat)
{
$this->cat = $cat;
}

ответил(а) 2021-01-25T19:53:11+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема