我将一个项目从Zend Framework 3迁移到Laminas。
因为我使用Doctrine和DoctrineModule\Cache\LaminasStorageCache发生错误。
留言说:* 无法创建名为“DoctrineModule\Cache\LaminasCache”的服务。原因:无法解析类DoctrineModule\Cache\LaminasCache中Laminas\Cache\Storage\Cache接口类型的参数“storage”的值(请求为DoctrineModule\Cache\LaminasCache)*
我没有在任何地方定义任何“存储”参数。
这个错误发生在我试图访问数据库的时候
$this->getServiceLocator()->get('Doctrine\ORM\EntityManager');
我可以获取ServiceLocator,它返回一个对象,但无法访问EntityManager。这个EntityManager多次子调用服务定位器,以创建不同Laminas模块的大量示例,并在LaminasStorageCache上失败,如错误消息所述。
我在localhost中有一个简单的MySQL,下面是关于Doctrine的简单配置:
'doctrine' => array(
'connection' => array(
'orm_default' => array(
'driverClass' => \Doctrine\DBAL\Driver\PDO\MySQL\Driver::class,
'params' => array(
'host' => 'localhost',
'port' => '3306',
'user' => 'root',
'password' => '',
'dbname' => 'mybase',
'charset' => 'utf8'
)
)
),
我不明白这个错误,它没有链接到我的应用程序代码,它来自Laminas deep ^^这应该是一个糟糕的配置,但我不能弄清楚是什么:'我深入代码,并试图配置Doctrine缓存,但没有任何区别。
如果有人能帮我或解释我错过了什么。
顺便说一句,我想补充的是,我有其他项目,成功迁移到Laminas,我没有看到任何差异的配置文件,他们工作得很好。
编辑:我深入到Laminas\Di\Resolver\DependencyResolver,看看
public function resolveParameters(string $requestedType, array $callTimeParameters = []): array
{
$definition = $this->getClassDefinition($requestedType);
$params = $definition->getParameters();
$result = [];
[... and here $params is an array and contain storage...]
foreach ($params as $paramInfo) {
[...]
// The parameter is required, but we can't find anything that is suitable
if ($paramInfo->isRequired()) {
$isAlias = $this->config->isAlias($requestedType);
$class = $isAlias ? $this->config->getClassForAlias($requestedType) : $requestedType;
assert(is_string($class));
throw new Exception\MissingPropertyException(sprintf(
'Could not resolve value for parameter "%s" of type %s in class %s (requested as %s)',
$name,
$type ?: 'any',
$class,
$requestedType
));
}
$result[$name] = new ValueInjection($paramInfo->getDefault());
这是显示的消息,是的,我配置错误的东西,但不能得到什么。它寻找'storage'参数,我没有定义它。Help:)
1条答案
按热度按时间b4lqfgs41#
我通过比较我的项目发现了这个问题。
在迁移过程中,laminas-di被自动添加为依赖项。教义加层迭有点太多了。
我删除laminas-di和这部分工作现在!
希望这可以帮助其他人在未来