Форма Symfony с сущностью - PullRequest
       22

Форма Symfony с сущностью

1 голос
/ 18 марта 2019

Привет мне нужна помощь мышления о форме с классом сущности. У меня есть функция редактирования

/**
 * @Route("/{id}/edit", name="admin_product_group_edit", methods={"GET","POST"})
 */
public function edit(Request $request, ProductGroup $productGroup): Response
{
    $form = $this->createForm(ProductGroupType::class, $productGroup);
    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid()) {
        $this->getDoctrine()->getManager()->flush();

        return $this->redirectToRoute('admin_product_group_index', [
            'id' => $productGroup->getId(),
        ]);
    }

    return $this->render('admin/product_group/edit.html.twig', [
        'product_group' => $productGroup,
        'form' => $form->createView(),
        'scrollUp' => true,
    ]);
}

и у меня есть форма Тип

    use App\Entity\ProductGroup;
use App\Entity\ProductType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;

class ProductGroupType extends AbstractType {

    public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder
        ->add('nameDe')
        ->add('nameEn')
        ->add('descriptionDe')
        ->add('descriptionEn')
        ->add('rank')
        ->add('active')
        ->add('creatDate')
        ->add('updateDate')
        ->add('productTypes', EntityType::class, [
        // looks for choices from this entity
        'class' => ProductType::class,
        // uses the User.username property as the visible option string
        'choice_label' => 'nameDe',
        // used to render a select box, check boxes or radios
        // 'multiple' => true,
        // 'expanded' => true,
        ]);
    }

    public function configureOptions(OptionsResolver $resolver) {
        $resolver->setDefaults([
            'data_class' => ProductGroup::class,
        ]);
    }
}

При создании новой группы товаров все окончательно, но после ее редактирования я не могу получить форму редактирования.

Я получаю эту ошибку

Аргумент 1, передаваемый в App \ Controller \ Admin \ ProductGroupController :: edit (), должен быть экземпляром App \ Entity \ ProductGroup, заданным экземпляром App \ Entity \ ProductType, вызываемым в / var / www / symfony-michael- roskosch / htdocs / vendor / symfony / http-kernel / HttpKernel.php в строке 150

Это symfony 4.3 с symfony2 У меня не было проблем с этим, вы можете дать мне совет?

1 Ответ

0 голосов
/ 18 марта 2019

хорошо, я нашел это

У меня был неправильный репозиторий. Класс связался с аннотацией orm

/**
- * @ORM\Entity(repositoryClass="App\Repository\ProductTypeRepository")
+ * @ORM\Entity(repositoryClass="App\Repository\ProductGroupRepository")
 */
class ProductGroup
{

Не было хорошей идеей брать имя сущности ProductType, потому что у вас есть форма ProductTypeType. После bin / console make: некоторые ошибки были в коде. Я не знаю, делал ли я их прошлой ночью, или это происходит из-за грубого процесса сам.

сейчас это работает: -)

...