Совсем отчаялся найти в чем ошибка Создаю форму, включающую в себя другую форму через CollectionType Свойство 'by_reference' => false установить не забыл Связь один ко многим. Но при сохранении получаю ошибку: Expected argument of type "App\Entity\TourDates", "Doctrine\Common\Collections\ArrayCollection" given at property path "tourDates".
Все дело в том что используется свойство entity set, в не add как должно быть.
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
class Tours
{
/**
* @ORM\OneToMany(targetEntity="App\Entity\TourDates", mappedBy="tourId", cascade={"persist"})
*/
private $tourDates;
public function __construct()
{
$this->tourDates = new ArrayCollection();
}
/**
* @return mixed
*/
public function getTourDates()
{
return $this->tourDates;
}
/**
* @param mixed $tourDates
*/
public function setTourDates(TourDates $tourDates): void
{
$this->tourDates = $tourDates;
}
public function addTourDates(TourDates $tourDates)
{
$tourDates->setTourId($this);
$this->tourDates->add($tourDates);
}
public function removeTourDates(TourDates $tourDates)
{
$this->tourDates->removeElement($tourDates);
}
}
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="tour_dates")
* @ORM\Entity(repositoryClass="App\Repository\TourDatesRepository")
*/
class TourDates
{
/**
* @var integer
*
* @ORM\ManyToOne(targetEntity="App\Entity\Tours", inversedBy="tourDates", cascade={"persist"})
* @ORM\JoinColumn(name="tour_id", referencedColumnName="id", nullable=false)
*/
private $tourId;
/**
* @return int
*/
public function getTourId()
{
return $this->tourId;
}
/**
* @param Tours $tourId
*/
public function setTourId(Tours $tourId)
{
$this->tourId = $tourId;
}
public function addTourId(Tours $tourId)
{
if (!$this->tourId->contains($tourId)) {
$this->tourId->add($tourId);
}
}
}
namespace App\Form;
class ToursType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('tourDates', CollectionType::class, [
"label" => false,
"entry_type" => TourDatesType::class,
'entry_options' => [
'label' => 'Даты проведения'
],
'allow_add' => true,
'by_reference' => false,
'allow_delete' => true,
'delete_empty' => true
])
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Tours::class,
]);
}
}
И контроллер
public function new(Request $request): Response
{
$tours = new Tours();
$tourDates = new TourDates();
$tours->addTourDates($tourDates);
$tours->setUserId($this->getUser());
$tours->setDateUpdate(new \DateTime(date("Y-m-d H:i:s")));
$form = $this->createForm(ToursType::class, $tours)
->add('saveAndCreateNew', SubmitType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($tours);
$em->flush();
if ($form->get('saveAndCreateNew')->isClicked()) {
return $this->redirectToRoute('tours_new');
}
return $this->redirectToRoute('tours');
}
return $this->render('admin/tours/index.html.twig', [
'form' => $form->createView(),
]);
}
Заранее спасибо за помощь!
В общем методом и проб и ошибок выяснилось что symfony как-то не так относится к именованием параметров если они во множественном числе(tourDate'S'). Изменив наименование параметра связи и всех сопутствующих методов с tourDates на tourDate все заработало.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
У меня есть два класса, main и Lesson7В классе Lesson7 у меня есть три метода:
Use case: приложение получает текст, отправляет его на сервер и получает аудиофайлыЭти аудиофайлы должны сохраняться на устройстве и uri этих...
Есть задача - собрать jar file так, чтобы он запускается на машине клиента - WindowsУ меня jar file запускается (двойным кликом или через командную строку...
Ребята помогите уже все перебробовал, но ничего не работаетКогда ввожу localhost:8080 страница откривается, а когда localhost:8080/page -вилетает Error 404