警告:尝试读取null:symfony上的属性“type”[已关闭]

l3zydbqr  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(108)

已关闭,此问题需要details or clarity,目前不接受回答。
**想要改进此问题吗?**通过editing this post添加详细信息并澄清问题。

上个月关门了。
Improve this question
我是新的symfony,我得到了这个错误“警告:试图读取属性“类型”的null”我不知道如何修复它,

've tried clearing the cache checking the typoes

这一切都没有解决它这里是我的控制器代码

<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
use Doctrine\ORM\EntityManagerInterface;
use App\Repository\UsersRepository;
use App\Entity\Users;
use App\Form\UserType;
use Symfony\Component\Intl\Countries;

class UserFormController extends AbstractController
{
    private $entityManager;

    public function __construct(EntityManagerInterface $entityManager)
    {
        $this->entityManager = $entityManager;
    }

    private function getCountries()
    {
        return array_flip(Countries::getNames()); // Use Countries class to get country names
    }

    #[Route('/user', name: 'form_index')]
    public function index(UsersRepository $userRepository): Response
    {
        $users = $userRepository->findAll(); // Renamed $user to $users to represent a collection

        return $this->render('user_form/index.html.twig', [
            'users' => $users, // Updated key name to be more descriptive
        ]);
    }

    #[Route('/user/create', name: 'user_create')]
    public function create(Request $request): Response
    {
        $user = new Users();

        $form = $this->createForm(UserType::class, $user, [
            'country' => $this->getCountries(),
        ]);

        return $this->render('user/create.html.twig', [
            'form' => $form->createView(),
        ]);
    }

    #[Route('/user/store', name: 'user_store')]
    public function store(Request $request): Response
    {
        $user = new Users();

        $form = $this->createForm(UserType::class, $user, [
            'country' => $this->getCountries(),
        ]);

        if ($form->isSubmitted() && $form->isValid()) { // Removed redundant request method check
            $this->entityManager->persist($user);
            $this->entityManager->flush();

            return $this->redirectToRoute('form_success');
        }

        return $this->render('user_form/create.html.twig', [
            'form' => $form->createView(),
        ]);
    }

    #[Route('/user/edit/{id}', name: 'form_edit')]
    public function edit(Request $request, int $id, UsersRepository $userRepository): Response
    {
        $user = $userRepository->find($id);

        if (!$user) {
            throw $this->createNotFoundException('User not found');
        }

        $form = $this->createForm(UserType::class, $user);

        $form->handleRequest($request);

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

            return $this->redirectToRoute('form_success');
        }

        return $this->render('user_form/edit.html.twig', [
            'form' => $form->createView(),
            'user' => $user,
        ]);
    }

    #[Route('/user/delete/{id}', name: 'form_delete')]
    public function delete(int $id, UsersRepository $userRepository, EntityManagerInterface $entityManager): Response
    {
        $user = $userRepository->find($id);

在此处键入

if (!$user) {
            throw $this->createNotFoundException('User not found');
        }

        $entityManager->remove($user);
        $entityManager->flush();

        return $this->redirectToRoute('form_success');
    }

    #[Route('/user', name: 'form_success')]
    public function success(): Response
    {
        return $this->render('user_form/index.html.twig');
    }
}
type her<?php

namespace App\Form;

use App\Entity\Users;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;

class UserType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options): void
    {
        $builder
            ->add('name', null, [
                'label' => 'Prénom',
            ])
            ->add('surname', null, [
                'label' => 'Nom',
            ])
            ->add('dateOfBirth', DateType::class, [
                'widget' => 'single_text',
                'html5' => true,
                'format' => 'yyyy-MM-dd',
                'label' => 'Date de naissance',
            ])
            ->add('role', null, [
                'label' => 'Role',
            ])
            ->add('country', ChoiceType::class, [
                'choices' => $options['country'],
                'label' => 'Pays',
            ])
            ->add('region', null, [
                'label' => 'Région',
            ]);
    }

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

create.html.twig

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
        <h1>Create User</h1>
    <form method="POST" action="{{ path('user_store') }}">

        {{ form_widget(form) }}
        <button type="submit" class="btn btn-primary">Creation</button>
    </form>
</body>
</html>

我想知道这个错误的原因以及如何修复它。我已经尝试清除该高速缓存并检查打字错误

uujelgoq

uujelgoq1#

我修复了我的错误,当我试图使用@assert来验证我的数据时发生了错误,这里是更正的格式
`/**

  • @ORM\Column(type=“string”,nullable=false)
  • @Assert\NotBlank
  • @Assert\Regex(
pattern="/^[a-zA-Z]{2,10}$/",
message="The name must be between 2 and 10 characters and contain only letters."
  • )*/`

相关问题