代码之家  ›  专栏  ›  技术社区  ›  metaxos

extbase还原已删除对象失败

  •  1
  • metaxos  · 技术社区  · 12 年前

    无法还原已删除的对象(deleteAction)(restoreAction),导致异常:

    属性路径“”处的属性映射时出现异常:找不到标识为“1”的对象。

    控制器:

    /**
     * action delete
     *
     * @param \EXAPOINT\Exacallmanagement\Domain\Model\Calls $calls
     * @return void
     */
    public function deleteAction(\EXAPOINT\Exacallmanagement\Domain\Model\Calls $calls) {
        $this->callsRepository->remove($calls);
        $this->flashMessageContainer->add('Call gelöscht.');
        $this->redirect('list');
    }
    
    
    /**
     * action restore
     *
     * @param \EXAPOINT\Exacallmanagement\Domain\Model\Calls $calls
     * @return void
     */
    public function restoreAction(\EXAPOINT\Exacallmanagement\Domain\Model\Calls $calls) {
        $calls->setDeleted(0);
        $this->callsRepository->update($calls);
        $this->redirect('list');
    }
    

    型号:

    /**
     * @var \integer
     */
    protected $deleted;
    
    /**
     * @return integer $deleted
     */
    public function getDeleted() {
        return $this->deleted;
    }
    
    /**
     * @param integer $deleted
     * @return void
     */
    public function setDeleted($deleted) {
        $this->deleted = $deleted;
    }
    

    问题的根源是否是存储库没有“看到”已删除的对象?最好的方法是什么?

    3 回复  |  直到 12 年前
        1
  •  3
  •   Daniel    12 年前

    如果属性映射器无法处理已删除的对象,只需将uid传递给restoreAction,然后

    • 检查具有该ID的deletedObject是否存在
    • 如果是这样的话,就恢复它
    • 如果没有,重定向,flashMessage,无论你喜欢什么

    确保在TCA中配置了已删除字段:

    'deleted' => array(
        'exclude' => 1,
        'label' => 'deleted',
        'config' => array(
            'type' => 'check',
        ),
    ),
    

    您不必将其添加到任何类型,但如果我没有记错,字段本身必须这样配置。

        2
  •  1
  •   Kana    12 年前

    必须配置存储库以查找通常由于enableFields而被忽略的实体。在存储库中,尝试以下操作:

    public function initializeObject() {
        $defaultQuerySettings = $this->objectManager->get('Tx_Extbase_Persistence_Typo3QuerySettings');
        $defaultQuerySettings->setRespectEnableFields(FALSE);
        $this->setDefaultQuerySettings($defaultQuerySettings);
    }
    
        3
  •  0
  •   lorenz mac    12 年前

    除了现有的答案之外:这个问题是众所周知的,对于TYPO3 6.2,这一点即将改变。您可以跟踪问题并测试Extbase补丁 here .