2012-07-22 14 views
8

Ho diversi controller come quelli: CategoryController e NewsController Così come i modelli di dominio per categoria e notizie e reposories per entrambi.repository extbase findAll() restituisce risultato null

Nel NewsController ho fare un DependencyInjection come questo (allo stesso modo in categoryController):

/** 
* categoryRepository 
* 
* @var Tx_MyExtension_Domain_Repository_CategoryRepository 
*/ 
protected $categoryRepository; 


    /** 
* injectCategoryRepository 
* 
* @param Tx_MyExtension_Domain_Repository_CategoryRepository $CategoryRepository 
* @return void 
*/ 
public function injectCategoryRepository(Tx_MyExtension_Domain_Repository_CategoryRepository $categoryRepository) { 
    $this->categoryRepository = $categoryRepository; 
} 

Quando sto provando ora in una funzione simile a questa:

/** 
* action getCategoriesAjax 
* 
* @param Tx_MyExtension_Domain_Model_News 
* @return void 
*/ 
public function getCategoriesAjaxAction() { 
    $categories = $this->categoryRepository->findAll(); 
    $this->view->assign('categories',$categories); 
} 

I ottenere un risultato vuoto indietro.

La cosa strana per me è che, se sto facendo questo nel CategoryController, la stessa funzione funziona come charme e restituisce tutti gli elementi nel database e anche estraneo per me è, che faccio un $ this this, -> categoryRepository-> findByUid (1) Ottengo l'elemento corretto come risultato.

Ho anche aggiunto al mio categoryRepository una funzione di test:

public function test(){ 
    $query = $this->createQuery(); 
    $result = $query->execute(); 
    $amount = $result.count(); 
} 

Se chiamo questa funzione da categoryController, torno la giusta quantità di elementi. Se sto chiamando questo dal mio newsController ottengo "0" di nuovo ...

io non capisco ...

Cosa mi manca ??? Dov'è il mio errore?

risposta

2

Sei sicuro che il valore di ritorno di findAll() sia NULL?

Potrebbe essere che la vostra dipendenza iniezione non funzioni. Poi l'eccezione dovrebbe essere qualcosa di simile:

findAll() viene chiamato su un non-oggetto ($ this-> categoryRepository)

anche nel vostro injectCategoryRepository si scrive $categoryRepository in lowerCamelCase e nelle annotazioni in UpperCamelCase$CategoryRepository

Spero che questo aiuti ..

+1

Thx per il suggerimento con il superiore/inferiore Custodia di caramelle. Ho saltato sul fatto che questa sarebbe stata la soluzione ... Avrò uno sguardo più approfondito su questo per essere sicuro di non avere questo sui luoghi severi. Non ricevo un errore, ottengo un oggetto Tx_Extbase_Persistence_QueryResult, ma senza risultato. Neanch'io ottengo un messaggio di errore. Grazie per il vostro supporto! – kapale

+0

Trovato il problema UpperCamelCase su una seconda possizione, ma sfortunatamente non ha risolto il mio problema. (Dopo aver cancellato tutte le cache) – kapale

11

Questo mi ha infastidito per giorni (o settimane). Lo StoragePid (il riferimento alla pagina in cui gli oggetti del database sono attaccati) non lo rende alla query di database, se non si definisce il seguente qualche parte nel vostro TypoScript:

plugin.tx_myextension.persistence.storagePid = 4 

mettere questo nel vostro Page- TS e il metodo findAll da Tx_Extbase_Persistence_Repository dovrebbero funzionare correttamente.

settimane.

+0

Ti amo per questo! –

1

Come ha detto Hendrik, è possibile impostarlo nella pagina TS. Un'altra soluzione è: in ESSERE, modificare il contenuto della pagina che contiene il plug-in, selezionare la cartella Sys, in cui sono memorizzati i db. Questo si trova nella scheda "Comportamento" per Typo3 v6.1

3

Oppure si potrebbe forzare Repository di ignorare conservazione Pagina:

class MymodelRepository extends \TYPO3\CMS\Extbase\Persistence\Repository { 
    public function initializeObject() { 

    $this->defaultQuerySettings = $this->objectManager->get('TYPO3\\CMS\\Extbase\\Persistence\\Generic\\Typo3QuerySettings'); 
    $this->defaultQuerySettings->setRespectStoragePage(FALSE); 
} 
} 

D'ora in poi il repository tirerà ogni record dal database.

+0

vedere la documentazione per tutte le opzioni: https://wiki.typo3.org/Default_Orderings_and_Query_Settings_in_Repository –

Problemi correlati