Я сделал расширение extbase с классом Appointment
со свойством expertises
и другим subExpertises
того же типа.
Вот как они выглядят в классе Appointment
(subExpertises
то же самое):
/**
* expertises
*
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<...\Domain\Model\Expertise>
*/
protected $expertises = NULL;
/**
* Adds an expertise
*
* @param ...\Domain\Model\Expertise $expertise
* @return void
*/
public function addExpertise(...\Domain\Model\Expertise $expertise) {
$this->expertises->attach($expertise);
}
Я получаю сообщение об ошибке при выполнении этого кода в моем контроллере после редактирования встречи в жидкой форме:
/**
*
* @param \Domain\Model\Appointment $appointment
* @return void
*/
public function bookAction(\Domain\Model\Appointment $appointment) {
//empty all expertises of appointment - then fill them with the selected from lawyer
$appointment->setExpertises(new \TYPO3\CMS\Extbase\Persistence\ObjectStorage());
$appointment->setSubExpertises(new \TYPO3\CMS\Extbase\Persistence\ObjectStorage());
//add all checked expertises of lawyer to appointment
foreach ($appointment->getLawyer()->getExpertises() as $expertise) {
if ($expertise->getChecked()) {
$appointment->addExpertise($expertise);
}
foreach ($expertise->getSubExpertises() as $subExpertise) {
if ($subExpertise->getChecked()) {
$appointment->addSubExpertise($subExpertise);
}
}
}
$this->appointmentRepository->update($appointment);
}
Это ошибка:
Неустранимая ошибка: вызов неопределенного метода \ Domain \ Model \ Expertise :: getPosition () в /var/www/typo3_src/typo3_src-6.2.25/typo3/sysext/extbase/Classes/Persistence/Generic/Backend.php в строке 453
Теперь кажется, что TYPO3 думает, что Expertise
относится к типу ObjectStorage
, потому что он пытается вызвать getPosition()
, но я не знаю, почему он это делает, и что мне следует изменить, чтобы успешно сохранить мой Appointment
объект с новым Expertises
.
Я попытался отладить объект встречи, но не смог найти проблему - мне это кажется нормальным, он просто показывает, что expertises
и subExpertises
были изменены.
expertises
иsubExpertises
имя классаExpertise
, аaddExpertise
только добавляет один, поэтому оно должно быть в единственном числе - person Cold_Class   schedule 06.12.2016