Спасибо за ответ. Проблема была решена: Symfony 4 и Doctrine, как автоматически создать хранилище после сопоставления?
У меня проблема с получением данных из таблицы MySQL,
Вот мой контроллер:
namespace App\Controller\Admin;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use App\Entity\EmailComponents;
class MigrationController extends AbstractController
{
/**
* @Route("/migration", name="migration_script")
*/
public function index(Request $request)
{
$entityManager = $this -> getDoctrine() -> getManager();
$email = new EmailComponents();
$form = $this->createFormBuilder($email)
->add('language', ChoiceType::class, [
'choices' => [
'Anglais' => 'en',
'Français' => 'fr',
'Allemend' => 'de',
'Néerlandais' => 'nl',
],
])
->add('subject', TextType::class)
->add('body', TextareaType::class)
->add('save', SubmitType::class, ['label' => 'Crée Email'])
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$email = $form->getData();
$entityManager -> persist($email);
$entityManager -> flush();
$this->addFlash('success', 'Email a été crée avec succès');
return $this -> redirectToRoute('migration_script');
}
$search = $entityManager -> getRepository(EmailComponents::class) -> findAll();
return $this->render('admin/migration/index.html.twig', array(
'form' => $form -> createView()
));
}
А вот файл EmailComponents.php:
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass="App\Repository\EmailComponentRepository")
*/
class EmailComponents
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=2)
*/
private $language;
/**
* @ORM\Column(type="string", length=250)
*/
private $subject;
/**
* @ORM\Column(type="string", length=5000)
*/
private $body;
public function getId()
{
return $this->id;
}
public function setId($id)
{
$this->id = $id;
}
public function getLanguage()
{
return $this->language;
}
public function setLanguage($language)
{
$this->language = $language;
}
public function getSubject()
{
return $this->subject;
}
public function setSubject($subject)
{
$this->subject = $subject;
}
public function getBody()
{
return $this->body;
}
public function setBody($body)
{
$this->body = $body;
}
}
Проблема в том, что каждый раз, когда я запускаю страницу, я получаюэто сообщение об ошибке:
Сущность «App \ Entity \ EmailComponents» имеет класс repositoryClass, установленный в «App \ Repository \ EmailComponentRepository», но это недопустимый класс.Проверьте название вашего класса.Если это должен быть идентификатор службы, убедитесь, что эта служба существует и помечена как «doctrine.repository_service».
Ошибка происходит из этой части:
$search = $entityManager -> getRepository(EmailComponents::class) -> findAll();