简体   繁体   English

更新到Symfony 2.3之后的Knp菜单包警告

[英]Knp menu bundle warnings after update to symfony 2.3

After updating symfony from 2.2 to 2.3, i've got new stange errors on all my pages and in my scripts: 将symfony从2.2更新到2.3之后,我在所有页面和脚本中出现新的错误:

Deprecated: Knp\\Menu\\Silex\\Voter\\RouteVoter is deprecated because of namespace, use Knp\\Menu\\Matcher\\Voter\\RouteVoter instead. 不建议使用:由于名称空间不建议使用Knp \\ Menu \\ Silex \\ Voter \\ RouteVoter,请改用Knp \\ Menu \\ Matcher \\ Voter \\ RouteVoter。 in \\vendor\\knplabs\\knp-menu\\src\\Knp\\Menu\\Silex\\Voter\\RouteVoter.php on line 20 在第20行的\\ vendor \\ knplabs \\ knp-menu \\ src \\ Knp \\ Menu \\ Silex \\ Voter \\ RouteVoter.php中

and

Deprecated: Knp\\Menu\\Silex\\RoutingExtension is deprecated, use Knp\\Menu\\Integration\\Symfony\\RoutingExtension instead. 不推荐使用:不推荐使用Knp \\ Menu \\ Silex \\ RoutingExtension,请改用Knp \\ Menu \\ Integration \\ Symfony \\ RoutingExtension。 in \\vendor\\knplabs\\knp-menu\\src\\Knp\\Menu\\Silex\\RoutingExtension.php on line 15 在第15行的\\ vendor \\ knplabs \\ knp-menu \\ src \\ Knp \\ Menu \\ Silex \\ RoutingExtension.php中

How could I fix this ? 我该如何解决? I don't find the answer on the web. 我在网络上找不到答案。
Thank you in advance 先感谢您

Here is my composer.json : 这是我的composer.json:

{
    "name": "symfony/framework-standard-edition",
    "description": "The \"Symfony Standard Edition\" distribution",
    "autoload": {
        "psr-0": { "": "src/" }
    },
    "require": {
        "php": ">=5.3.3",
        "symfony/symfony": "2.3.*",
        "doctrine/orm": ">=2.2.3,<2.4-dev",
        "doctrine/doctrine-bundle": "1.2.*",
        "twig/extensions": "1.0.*",
        "symfony/assetic-bundle": "2.3.*",
        "symfony/swiftmailer-bundle": "2.3.*",
        "symfony/monolog-bundle": "2.3.*",
        "sensio/distribution-bundle": "2.3.*",
        "sensio/framework-extra-bundle": "2.3.*",
        "sensio/generator-bundle": "2.3.*",
        "incenteev/composer-parameter-handler": "~2.0",
    "genemu/form-bundle": "2.1.*",
        "jms/security-extra-bundle": "1.5.*",
        "jms/di-extra-bundle": "1.4.*",
        "phpunit/phpunit": "3.7.*",
    "doctrine/data-fixtures": "@dev",
    "friendsofsymfony/user-bundle": "~2.0@dev",
    "stof/doctrine-extensions-bundle": "dev-master",
        "knplabs/gaufrette": "0.2.*@dev",
        "knplabs/knp-gaufrette-bundle":          "dev-master",
    "jms/serializer-bundle":                 "0.13.*@dev",
        "amazonwebservices/aws-sdk-for-php":     "dev-master",
        "punkave/symfony2-file-uploader-bundle": "dev-master",
        "oneup/uploader-bundle":                 "dev-master",
        "knplabs/knp-paginator-bundle":          "dev-master",
        "jms/debugging-bundle":                  "dev-master",
        "winzou/console-bundle":                 "dev-master",
        "elao/web-profiler-extra-bundle" :       "dev-master",
        "cybernox/amazon-webservices-bundle":    ">=1.5.4",
        "genemu/form-bundle":                    "2.2.*",
    "escapestudios/wsse-authentication-bundle": "2.3.x-dev",
        "rezzza/flickr-bundle":                  "1.0.*@dev",
        "knplabs/knp-menu-bundle":               "dev-master",
        "genemu/form-bundle":                    "2.1.*",
        "leaseweb/api-caller-bundle":        "*",
        "eo/honeypot-bundle":                    "dev-master"        
    },
    "scripts": {
        "post-install-cmd": [
            "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
        ],
        "post-update-cmd": [
            "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
        ]
    },
    "config": {
        "bin-dir": "bin"
    },
    "minimum-stability": "alpha",
    "extra": {
        "symfony-app-dir": "app",
        "symfony-web-dir": "web",
        "incenteev-parameters": {
            "file": "app/config/parameters.yml"
        }, 
        "branch-alias": {
            "dev-master": "2.3-dev"
        }
    }
}

and my menu builder: 和我的菜单生成器:

namespace ...\Menu;

use Knp\Menu\Matcher\Matcher;
use Knp\Menu\MenuFactory;
use Knp\Menu\Renderer\ListRenderer;

use Symfony\Component\DependencyInjection\ContainerAware;

class Builder extends ContainerAware
{
    public function mainMenu(MenuFactory $factory, array $options)
    {
        $menu = $factory->createItem('root');

        $menu->addChild('Dashboard', array(
                        'route' => 'dashboard' )); 
        $menu->addChild('Color Scheme', array(
                        'uri' => 'slidescheme' ));
        $menu->addChild('Questionnnaires', array(
                        'uri' => 'questionnaire_manage' ));
        // ... add more children

        return $menu;
    }
}

It's not a good idea update your symfony version in the middle of a develpment. 在开发过程中更新您的symfony版本不是一个好主意。 Actually, it's a bad idea upgrade any bundle you are using in your code (there's always exceptions, but this is the general rule). 实际上,升级代码中使用的任何捆绑包都是一个坏主意(总是有例外,但这是一般规则)。

In your case, the bundle has been refactored in this new version, so now it's not compatible with the code you have written . 对于您而言,该软件包已在此新版本中进行了重构,因此现在它与您编写的代码不兼容。 I'm afraid you only have two alternatives: 恐怕您只有两种选择:

  • Adapt your code to the new requirements 使您的代码适应新要求
  • Or change your composer again to use symfony 2.2 and run composer update 再次更改您的作曲家以使用symfony 2.2并运行作曲家更新

I strongly suggest the second option if you already have many lines of code written. 如果您已经编写了很多行代码,我强烈建议您使用第二种方法。

The issue is that you're using a dev version of knplabs/menu. 问题是您使用的是knplabs / menu的开发版本。 Edit your composer file from: 从以下位置编辑您的作曲家文件:

"knplabs/knp-menu-bundle":               "dev-master",

to: 至:

"knplabs/knp-menu-bundle" :               "~1.1",

and the error message will go away. 错误消息将消失。 Note that if you're actually using dev features of knplabs/menu (like Matcher and Voter ) those won't be available any more. 请注意,如果您实际上使用的是knplabs / menu的开发功能(例如MatcherVoter ),这些功能将不再可用。 But Symfony does not require them anyway. 但是,Symfony并不需要它们。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM