我正在尝试使用m:n关系,与FrontEndUser与FrontEndUserGroup相关的方式相同,例如,没有中间的mm表。在我的控制器中,我构建了我的对象,然后调用$barRepository->update($barObject);
来更新我的对象的值。但是,在更新函数上失败,并出现以下错误:
Fatal error: Call to undefined method Cbrunet\Up\Domain\Model\Foo::getPosition() in /home/cbrunet/websites/typo3_src-6.1.1/typo3/sysext/extbase/Classes/Persistence/Generic/Backend.php on line 486
当 Foo
是 Bar 的 ObjectStorage 中包含对象的类型时。我的理解是应该在 ObjectStorage
上调用 getPosition
,而不是在包含在该 ObjectStorage
中的对象上调用。然而,我无法弄清楚为什么在我的情况下这不起作用。
这是在 TYPO3 6.1.5 中。任何提示都将不胜感激。
Bar
的模型具有与 Foo
的 m:n 关系,如下所示:
namespace Cbrunet\Up\Domain\Model;
class Bar extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\Cbrunet\Up\Domain\Model\Foo>
*/
protected $myprop;
public function __construct() {
$this->myprop = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
}
/**
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage $myprop
* @return void
*/
public function setMyprop(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $myprop) {
$this->myprop = $myprop;
}
/**
* @param \Cbrunet\Up\Domain\Model\Foo $myprop
* @return void
*/
public function addMyprop(\Cbrunet\Up\Domain\Model\Foo $myprop) {
$this->myprop->attach($myprop);
}
/**
* @param \Cbrunet\Up\Domain\Model\Foo $myprop
* @return void
*/
public function removeMyprop(\Cbrunet\Up\Domain\Model\Foo $myprop) {
$this->myprop->detach($myprop);
}
/**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage
*/
public function getMyprop() {
return $this->myprop;
}
}
我的控制器中相关的代码如下:
/**
* action update
*
* @return void
*/
public function updateAction() {
$args = $this->request->getArgument('myargs');
foreach ($args as $k=>$val) {
$pp = $this->barRepository->findOneByAprop($k); // another prop of Bar, not illustrated in the code above.
$listepour = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
foreach ($val as $p) {
$ap = $this->fooRepository->findOneByUid(intval($p));
$listepour->attach($ap);
}
$pp->setMyprop($listepour);
$this->barRepository->update($pp); // error occurs here
}
$this->redirect('list');
}
initStorageObjects
函数。它在哪里有文档记录?为什么FrontEndUser
没有这个函数? - Charles Brunet