2013-02-18 55 views
1

我試着用下面的兩捆在我symfony2.1項目:包括兩束,其使用的是相同的子捆綁

我的問題是,這兩個捆綁包同時使用knp-menu bundle。 但奏鳴曲需要knp-menu軟件包 的1.1.x-dev和braincrafted bootstrap-bundle dev-master。

隨着下面的作曲家設置,我得到以下錯誤。 Composer.json:

"sonata-project/admin-bundle": "dev-master", 
    "sonata-project/doctrine-orm-admin-bundle": "dev-master", 
    "sonata-project/intl-bundle": "dev-master", 
    "sonata-project/cache-bundle": "dev-master", 
    "knplabs/knp-menu-bundle": "1.1.x-dev", 
    "braincrafted/bootstrap-bundle": "dev-develop" 

錯誤: KNP \菜單\匹配器\選民\ VoterInterface」沒有供應商發現/ braincrafted /引導束/ Braincrafted/BootstrapBundle /選民/ RequestVoter

我知道, Matcher在早期的knp菜單包版本中不存在。但是,如果我將knp菜單捆綁版本更改爲:

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

無法安裝奏鳴曲管理包。如果我執行命令「composer.phar更新」出現以下錯誤

Problem 1 
    - sonata-project/admin-bundle dev-master requires knplabs/knp-menu-bundle >=1.1.0,<2.0.x-dev -> satisfiable by knplabs/knp-menu-bundle 1.1.x-dev, knplabs/knp-menu-bundle 1.1.x-dev, knplabs/knp-menu-bundle v1.1.0. 
    - sonata-project/admin-bundle dev-master requires knplabs/knp-menu-bundle >=1.1.0,<2.0.x-dev -> satisfiable by knplabs/knp-menu-bundle 1.1.x-dev, knplabs/knp-menu-bundle 1.1.x-dev, knplabs/knp-menu-bundle v1.1.0. 
    - Can only install one of: knplabs/knp-menu-bundle dev-master, knplabs/knp-menu-bundle 1.1.x-dev. 
    - Can only install one of: knplabs/knp-menu-bundle dev-master, knplabs/knp-menu-bundle 1.1.x-dev. 
    - Can only install one of: knplabs/knp-menu-bundle v1.1.0, knplabs/knp-menu-bundle dev-master. 
    - Installation request for knplabs/knp-menu-bundle dev-master -> satisfiable by knplabs/knp-menu-bundle dev-master. 
    - Installation request for sonata-project/admin-bundle dev-master -> satisfiable by sonata-project/admin-bundle dev-master. 

有某人知道如何才能同時使用捆綁或不是有沒有辦法?感謝幫助。

+0

你打開一張票嗎? – Mick 2013-03-13 00:01:15

+0

不,但是有這個問題的票已經打開 – Flow 2013-05-03 13:18:18

回答

0

我發現了一個臨時解決方案來使用這兩個包,直到解決此ticket

我在composer.json文件中定義的存儲庫和操縱奏管理員束要求( 「knplabs/KNP-菜單束」: 「DEV-主」):

"repositories": [ 
{ 
    "type": "package",    
    "package": { 
     "name": "sonata-project/admin-bundle", 
     "type": "symfony-bundle", 
     "description": "Symfony SonataAdminBundle", 
     "keywords": ["Admin Generator", "admin", "sonata", "bootstrap"], 
     "homepage": "http://sonata-project.org/bundles/admin", 
     "license": "MIT", 
     "authors": [ 
     { 
      "name": "Thomas Rabaix", 
      "email": "[email protected]", 
      "homepage": "http://sonata-project.org" 
     }, 
     { 
      "name": "Sonata Community", 
      "homepage": "https://github.com/sonata-project/SonataAdminBundle/contributors" 
     } 
     ], 
     "require": { 
      "symfony/http-foundation": ">=2.1,<2.3-dev", 
      "symfony/form": ">=2.1,<2.3-dev", 
      "symfony/validator": ">=2.1,<2.3-dev", 
      "symfony/security-bundle": ">=2.1,<2.3-dev", 
      "symfony/routing": ">=2.1,<2.3-dev", 
      "symfony/config": ">=2.1,<2.3-dev", 
      "symfony/console": ">=2.1,<2.3-dev", 
      "symfony/twig-bridge": ">=2.1,<2.3-dev", 
      "twig/twig": ">=1.10,<2.0-dev", 
      "knplabs/knp-menu-bundle": "dev-master", 
      "sonata-project/jquery-bundle": "dev-master", 
      "sonata-project/exporter": "dev-master", 
      "sonata-project/block-bundle": "dev-master", 
      "doctrine/common": ">=2.2,<3.0" 
     }, 
     "require-dev": { 
      "jms/translation-bundle": "*" 
     }, 
     "suggest": { 
      "sonata-project/doctrine-orm-admin-bundle": "dev-master", 
      "sonata-project/intl-bundle": "dev-master" 
     }, 
     "autoload": { 
      "psr-0": { 
       "Sonata\\AdminBundle": "" 
      } 
     }, 
     "target-dir": "Sonata/AdminBundle",    
     "version": "dev-master", 
     "source": { 
      "url": "git://github.com/sonata-project/SonataAdminBundle.git", 
      "type": "git", 
      "reference": "0269691d61764798537a2fd3b13bfafbfb387eef" 
     }     

    } 
} 

然後,我必須覆蓋admin類中的buildSideMenu方法,因爲方法setCurrentUri()不再存在(現在名爲setUri())。和所有我自己的管理類現在延長MyAdmin

abstract class MyAdmin extends Admin 
{ 

    /** 
    * Build the side menu related to the current action 
    * 
    * @param string         $action 
    * @param \Sonata\AdminBundle\Admin\AdminInterface $childAdmin 
    * 
    * @return \Knp\Menu\ItemInterface|boolean 
    */ 
    public function buildSideMenu($action, AdminInterface $childAdmin = null) 
    { 
     if ($this->loaded['side_menu']) { 
      return; 
     } 

     $this->loaded['side_menu'] = true; 

     $menu = $this->menuFactory->createItem('root'); 
     $menu->setChildrenAttribute('class', 'nav nav-list'); 
     $menu->setUri($this->getRequest()->getBaseUrl().$this->getRequest()->getPathInfo()); 

     $this->configureSideMenu($menu, $action, $childAdmin); 

     foreach ($this->getExtensions() as $extension) { 
      $extension->configureSideMenu($this, $menu, $action, $childAdmin); 
     } 

     $this->menu = $menu; 
    } 


} 

我知道這是不是最好的解決方案,但它的工作對我的目的

0

使用Composer,您不能同時使用這兩個包。其實你應該在https://github.com/braincrafted/bootstrap-bundle中打開一張票並解釋情況。他們應該更新項目的composer.json以允許人們使用當前版本的KnpMenu,而不僅僅是最新的版本。

1

編輯composer.json並修改參考線到KNP-菜單束看起來像這樣: 「knplabs/KNP-菜單束」: 「1.1.x的-dev的」,

它需要一個版本> = 1.1.0,< 2.0.x-dev,在錯誤的第一行中指出。

這對我很有用。

+0

,但隨後braincrafted/bootstrap-bundle不再工作,因爲它需要「dev-master」,並且knp菜單包dev-master超過2.0.x – Flow 2013-05-03 13:28:36

相關問題