2014-02-12 55 views
1

刪除的對象(deleteAction)不能被恢復(restoreAction),帶來了一個異常:extbase還原已刪除對象失敗

異常,而在屬性路徑「屬性映射」:與標識對象「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

如果屬性映射器不能處理已刪除的對象,只是通過UID您restoreAction,然後如果與ID的deletedObject存在

  • 檢查
  • 如果多數民衆贊成的情況下,將其還原
  • 如果沒有,重定向,flashMessage,不管你喜歡

確保您已在TCA配置的刪除字段:

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

你不必將它添加到任何類型的,但如果我沒有記錯的領域本身必須像這樣被配置。

+0

你的意思是通過{ callUid:calls.uid}作爲一個整數的控制器,然後通過findByUid得到調用恢復? – metaxos

+0

就是這樣的。 – Daniel

+0

okey ...奇怪的行爲,setName的作品,但setDeleted(0)沒有,任何想法?'code' \t/** \t *行動恢復 \t * \t * @參數整數$ callUid \t * @返回無效 \t */ \t公共職能restoreAction($ callUid){ \t \t $電話= $這 - > callsRepository-> findByUid($ callUid); \t \t $ calls-> setDeleted(0); \t \t $ calls-> setName('test'); \t \t $ this-> callsRepository-> update($ calls); \t \t $ this-> redirect('list'); \t} – metaxos

1

存儲庫必須配置爲查找通常由於enableFields而被忽略的實體。在你的倉庫,你可以試試:

public function initializeObject() { 
    $defaultQuerySettings = $this->objectManager->get('Tx_Extbase_Persistence_Typo3QuerySettings'); 
    $defaultQuerySettings->setRespectEnableFields(FALSE); 
    $this->setDefaultQuerySettings($defaultQuerySettings); 
} 
+0

當我添加你的建議加$ defaultQuerySettings-> setIncludeDeleted(TRUE);那麼我也看到記錄是「刪除= 1」,所以initializeObject()「工作」,但仍然得到了同樣的異常,而屬性映射屬性路徑「」:沒有找到標識爲「1」的對象 – metaxos

0

除了現有的答案:這個問題是衆所周知的,而這個問題即將改變爲TYPO3 6.2。你可以關注這個問題並測試一個Extbase補丁here

+0

我剛剛嘗試了僞造中提到的新的AbstractController,但是id沒有幫助。你已經用過了嗎? – metaxos

相關問題