findAll 在 extbase 中的非对象上
findAll on non object in extbase
我刚刚在 typo3 4.5 中用一个模型(产品)创建了一个扩展。我创建了 "productRepository" 然后将其注入 ProductController 但我仍然得到
Call to a member function findAll() on a non-object
ProductController 的外观如下:
/**
* @var Tx_PiProductDetail_Domain_Repository_ProductRepository
*/
protected $productRepository;
/**
* @param Tx_PiProductDetail_Domain_Repository_ProductRepository $productRepository
* @return void
*/
public function injectProductRepository(Tx_PiProductDetail_Domain_Repository_ProductRepository $productRepository) {
$this->productRepository = $productRepository;
}
/**
* action list
*
* @return void
*/
public function listAction() {
$products = $this->productRepository->findAll();
$this->view->assign('products', $products);
}
和 ProductRepository:
class Tx_PiProductDetail_Domain_Repository_ProductRepository extends Tx_Extbase_Persistence_Repository { }
这与Extbase中的object
和reflection caching
有关。
在 TYPO3 4.5
中,您应该 truncate
手动地 cache
数据库中的所有相关表。我猜 Extbase 对象和反射缓存的相关表是 cf_extbase_object
、cf_extbase_object_tags
、bcf_extbase_reflection
和 cf_extbase_reflection_tags
,但我不确定。
在 TYPO3 4.5
中,您可以通过将此添加到 typo3conf/localconf.php
:
来避免开发时出现的问题
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['extbase_reflection']['backend'] = 't3lib_cache_backend_NullBackend';
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['extbase_object']['backend'] = 't3lib_cache_backend_NullBackend';
我刚刚在 typo3 4.5 中用一个模型(产品)创建了一个扩展。我创建了 "productRepository" 然后将其注入 ProductController 但我仍然得到
Call to a member function findAll() on a non-object
ProductController 的外观如下:
/**
* @var Tx_PiProductDetail_Domain_Repository_ProductRepository
*/
protected $productRepository;
/**
* @param Tx_PiProductDetail_Domain_Repository_ProductRepository $productRepository
* @return void
*/
public function injectProductRepository(Tx_PiProductDetail_Domain_Repository_ProductRepository $productRepository) {
$this->productRepository = $productRepository;
}
/**
* action list
*
* @return void
*/
public function listAction() {
$products = $this->productRepository->findAll();
$this->view->assign('products', $products);
}
和 ProductRepository:
class Tx_PiProductDetail_Domain_Repository_ProductRepository extends Tx_Extbase_Persistence_Repository { }
这与Extbase中的object
和reflection caching
有关。
在 TYPO3 4.5
中,您应该 truncate
手动地 cache
数据库中的所有相关表。我猜 Extbase 对象和反射缓存的相关表是 cf_extbase_object
、cf_extbase_object_tags
、bcf_extbase_reflection
和 cf_extbase_reflection_tags
,但我不确定。
在 TYPO3 4.5
中,您可以通过将此添加到 typo3conf/localconf.php
:
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['extbase_reflection']['backend'] = 't3lib_cache_backend_NullBackend';
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['extbase_object']['backend'] = 't3lib_cache_backend_NullBackend';