9

私はこれらのようないくつかのコントローラを持っています: CategoryController と NewsController と同様に、カテゴリとニュースのドメイン モデルと両方のリポジトリです。

NewsController では、次のような依存性注入を行います (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;
}

私が今このような関数で試しているとき:

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

空の結果が返されます。

私にとって奇妙なことは、CategoryController でこれを行っている場合、同じ関数がチャームのように機能し、データベース内のすべての要素を返すことです。さらに奇妙なことは、 $this->categoryRepository-> findByUid(1) result として正しい要素を取得します

また、categoryRepository にテスト関数を追加しました。

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

この関数を categoryController から呼び出すと、正しい量の要素が返されます。これを newsController から呼び出すと、「0」が返されます...

理解できません...

何が恋しいですか??? 私の間違いはどこですか?

4

4 に答える 4

12

これは私を数日(または数週間)悩ませてきました。TypoScript のどこかに次のように定義しないと、StoragePid (データベース アイテムが添付されているページへの参照) はデータベース クエリに到達しません。

plugin.tx_myextension.persistence.storagePid = 4

これを Page-TS に入れると、Tx_Extbase_Persistence_Repository の findAll メソッドが正常に動作するはずです。

数週間。

于 2012-10-18T12:01:17.373 に答える
3

または、リポジトリにストレージ ページを無視させることもできます。

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);
 }
}

これからは、リポジトリがデータベースからすべてのレコードを取得します。

于 2014-09-01T10:08:39.867 に答える
2

findAll() の戻り値が NULL であることは確かですか?

依存性注入が機能しない可能性があります。次に、例外は次のようになります。

findAll() は非オブジェクトで呼び出されます ($this->categoryRepository)

また、injectCategoryRepository では$categoryRepositorylowerCamelCaseとUpperCamelCaseの注釈に書き込みます $CategoryRepository

お役に立てれば..

于 2012-07-23T09:55:48.063 に答える
1

Hendrik が言ったように、ページ TS で設定できます。もう 1 つの解決策は次のとおりです。BE で、プラグインを含むページ コンテンツを編集し、db アイテムが保存されている Sys フォルダを選択します。これは、Typo3 v6.1 の「動作」タブの下にあります。

于 2014-01-31T11:13:05.607 に答える