Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony sylius/web捆绑包和knplabs/knp菜单捆绑包版本2_Symfony_Composer Php_Sylius - Fatal编程技术网

Symfony sylius/web捆绑包和knplabs/knp菜单捆绑包版本2

Symfony sylius/web捆绑包和knplabs/knp菜单捆绑包版本2,symfony,composer-php,sylius,Symfony,Composer Php,Sylius,我需要在现有的Symfony 2.4项目中集成Sylius。 这个项目已经有一个依赖项列表,我已经在其中添加了Sylius依赖项。除了一个依赖项外,一切正常:项目使用的knplabs/knp菜单包是2.0.*@dev,sylius/web包所需的包是1.1.* 现在,当尝试运行composer安装--preference dist时,显然会产生冲突: Your requirements could not be resolved to an installable set of packages

我需要在现有的
Symfony 2.4
项目中集成
Sylius
。 这个项目已经有一个依赖项列表,我已经在其中添加了Sylius依赖项。除了一个依赖项外,一切正常:项目使用的
knplabs/knp菜单包是
2.0.*@dev
sylius/web包所需的包是
1.1.*

现在,当尝试运行
composer安装--preference dist
时,显然会产生冲突:

Your requirements could not be resolved to an installable set of packages.

Problem 1
- sylius/web-bundle 1.0.x-dev requires knplabs/knp-menu-bundle 1.1.* -> satisfiable by knplabs/knp-menu-bundle[1.1.x-dev].
- sylius/web-bundle 1.0.x-dev requires knplabs/knp-menu-bundle 1.1.* -> satisfiable by knplabs/knp-menu-bundle[1.1.x-dev].
- Conclusion: don't install knplabs/knp-menu-bundle 1.1.x-dev
- Installation request for sylius/web-bundle 1.0.*@dev -> satisfiable by sylius/web-bundle[1.0.x-dev].
删除以下明确提及将使composer工作并签出版本
1.1
(根据web捆绑包的要求):

但是,当然,在应用程序中会出现错误,因为原始应用程序需要来自版本2的逻辑

这是我的整个
composer.json


我该如何着手解决这个问题呢?我是否可以让Sylius web捆绑包使用
knp菜单捆绑包
Version2?

可能主要错误是使用了只具有开发稳定性的包。从我在packagist.org上看到的情况来看,“knplabs/knp菜单包”在9个多月前已经发布了alpha版本,开发分支上一次提交是在一周前。我不知道这是否能告诉我一些事情,但我认为开发人员可能会看到他们的软件还没有准备好投入生产使用,可能会建议使用旧的1.x版本

如果他们认为这是真的,那么这些家伙的同一个软件“sylius/Webbundle”只依赖于旧版本,而这完全符合这张图。该软件的依赖项尚未在新版本中发布,因此无需同时发布带有新软件包的软件

请注意,“sylius/web捆绑包”的早期版本实际上依赖于2.0.*-dev版本的“knplabs/knp菜单捆绑包”,但我想知道为什么在以后的版本中它们会从该版本中退出。它可能引发了太多的问题,跟踪正在进行的开发,导致9个月内没有发布软件

一般来说,我认为composer.json包含了太多的“dev master”和“@dev”版本,无法解析为一组稳定的依赖项

但是你能做什么呢?将“knplabs/knp菜单包”别名为1.1.x版可能会有所帮助。您可能会很快发现,由于类不兼容,这将破坏哪些软件依赖关系—在最坏的情况下,只有在您将代码推送到生产环境中之后,才会发现这一点(您确实需要进行测试,不是吗)

您还可以向“sylius/web捆绑包”的开发人员提出问题,以发布依赖于2.0.x-dev版本的“KNPLAB/knp菜单捆绑包”

另一种方法是克隆“sylius/web bundle”项目,更改composer.json中依赖于“knplabs/knp menu bundle”的那一行,修复由于该更改而发出的任何可能的请求,使用此更改为原始项目创建一个pull请求,直到发生为止,通过将Github URL添加到composer.json的
repositories
部分,您可以包含自己的存储库,而不是原始存储库

您还可以尝试说服“knplabs/knp菜单包”的成员标记另一个版本,以便更多的包能够依赖于新的标记,而不是依赖于开发分支(这样做会意外地破坏事情,如果您发布稳定的软件,这是不可能的)。之后,再次触发“sylius/web捆绑包”尝试使用新版本


如果其他一切都失败了,最后一个选项是:不要使用“sylius/web捆绑包”。或者不要使用“knplabs/knp菜单包”版本2.0.x-dev.

您可以尝试使用内联别名
2.0.*@dev as 1.1.2
。但是这并没有提醒你注意代码的变化,比如删除方法/类。谢谢你的回答,斯文,我可以看到你花了时间写了你的回复,我非常感谢。我会仔细检查这些选项,看看什么最适合我。克隆
sylius/web bundle
并将其更新为使用菜单bundle的版本2会使我失去更新
web bundle
的能力,但我想这比从项目中完全删除它要好。
    "knplabs/knp-menu":                         "2.0.*@dev",
    "knplabs/knp-menu-bundle":                  "2.0.*@dev",