2016-07-06 59 views
0

軟件包名稱:打開TOK獲得的附加捆綁錯誤供應商的文件夾中的Symfony2

(我從GitHub下載了)我把該文件夾中的Symfony的供應商的文件夾(項目名\供應商\ OpenTok \ OpenTok \和所有文件和文件夾,在這裏)

AppKernel.php在

<?php 

use Symfony\Component\HttpKernel\Kernel; 
use Symfony\Component\Config\Loader\LoaderInterface; 

class AppKernel extends Kernel 
{ 
    public function registerBundles() 
    { 
     $bundles = array(
     new Symfony\Bundle\FrameworkBundle\FrameworkBundle(), 
     new Symfony\Bundle\SecurityBundle\SecurityBundle(), 
     new Symfony\Bundle\TwigBundle\TwigBundle(), 
     new Symfony\Bundle\MonologBundle\MonologBundle(), 
     new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(), 
     new OpenTokBundle\OpenTokBundle(), 
     new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(), 
     new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(), 
     new AdminBundle\AdminBundle(), 
     new SiteBundle\SiteBundle(), 
     new WSBundle\WSBundle(), 
    ); 

    if (in_array($this->getEnvironment(), array('dev', 'test'), true)) { 
     $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle(); 
     $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle(); 
     $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle(); 
     $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle(); 
    } 

    return $bundles; 
    } 

    public function registerContainerConfiguration(LoaderInterface $loader) 
    { 
     $loader->load($this->getRootDir().'/config/config_'.$this->getEnvironment().'.yml'); 
    } 
} 

應用程序\ autoload.php

<?php 

    use Doctrine\Common\Annotations\AnnotationRegistry; 
    use Composer\Autoload\ClassLoader; 
    /** 
    * @var ClassLoader $loader 
    */ 
    $loader = require __DIR__.'/../vendor/autoload.php'; 
    AnnotationRegistry::registerLoader(array($loader, 'loadClass')); 
    $loader->add('OpenTok' , __DIR__.'/..vendor/OpenTok'); 
    return $loader; 

?> 

Composer.json

"require": { 
     "php": ">=5.3.9", 
     "symfony/symfony": "2.8.*", 
     "doctrine/orm": "^2.4.8", 
     "doctrine/doctrine-bundle": "~1.4", 
     "symfony/swiftmailer-bundle": "~2.3", 
     "symfony/monolog-bundle": "~2.4", 
     "sensio/distribution-bundle": "~5.0", 
     "sensio/framework-extra-bundle": "^3.0.2", 
     "incenteev/composer-parameter-handler": "~2.0", 
     "opentok/opentok": "dev-master" 
    }, 

這上面的代碼給我錯誤:

Fatal error: Class 'OpenTokBundle\OpenTokBundle' not found

現在我怎麼能在我的所有其他文件使用opentok捆綁?請幫幫我。我是symfony的新手

回答

1

你的問題是由於斜線。
它應該是$loader->add('OpenTok' => __DIR__.'/../vendor/OpenTok');在其他行(儘管我不確定實際路徑是否正確)。

這就是說,你應該實際上下載並使用作曲家來管理這個軟件包,因爲它有依賴關係,這些依賴關係不會僅僅通過下載版本庫而被包含。

要做到這一點:

  1. 從自動加載刪除$loader->add('OpenTok' => __DIR__.'/..vendor/OpenTok');
  2. 添加"opentok/opentok": "^2.3.2"或者你想下載到你的「規定」鍵的版本在你composer.json
  3. 運行composer update opentok/opentok

程序包和類現在應該可以在您的應用程序中使用,並且當您需要更新版本時,您可以通過作曲程序管理它,而不需要手動下載程序包(以及所有依賴項)。

+0

對不起,先生,但即時通訊新的symfony,我不能得到理解第二和第三點 –

+0

請看到我的編輯問題 –

+0

您已經'opentok/opentok '在你的composer.json中。你的機器上有作曲家嗎?如果沒有,打開終端,進入Symfony應用程序的根目錄並安裝它(請參閱https://getcomposer.org/download/)。然後在終端運行'php composer.phar update opentok/opentok'。有關作曲家的更多信息,請參閱https://getcomposer.org/doc/01-basic-usage.md – qooplmao

1

我想你應該管理全部採用作曲家,你需要安裝庫opentok/opentok併爲symfony1.2 喬斯/ opentok束 所以你composer.json捆.. 。

"require": { 
    "php": ">=5.3.9", 
    "symfony/symfony": "2.8.*", 
    "doctrine/orm": "^2.4.8", 
    "doctrine/doctrine-bundle": "~1.4", 
    "symfony/swiftmailer-bundle": "~2.3", 
    "symfony/monolog-bundle": "~2.4", 
    "sensio/distribution-bundle": "~5.0", 
    "sensio/framework-extra-bundle": "^3.0.2", 
    "incenteev/composer-parameter-handler": "~2.0", 
    "joos/open-tok-bundle": "2.3.x-dev", 
    "opentok/opentok": "dev-master" 
    }, 

運行作曲家安裝

而在你AppKernel。PHP

<?php 

use Symfony\Component\HttpKernel\Kernel; 
use Symfony\Component\Config\Loader\LoaderInterface; 

class AppKernel extends Kernel 
{ 
    public function registerBundles() 
    { 
     $bundles = array(
     new Symfony\Bundle\FrameworkBundle\FrameworkBundle(), 
     new Symfony\Bundle\SecurityBundle\SecurityBundle(), 
     new Symfony\Bundle\TwigBundle\TwigBundle(), 
     new Symfony\Bundle\MonologBundle\MonologBundle(), 
     new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(), 
     new Joos\OpenTokBundle\JoosOpenTokBundle(), 
     new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(), 
     new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(), 
     new AdminBundle\AdminBundle(), 
     new SiteBundle\SiteBundle(), 
     new WSBundle\WSBundle(), 
    ); 

    if (in_array($this->getEnvironment(), array('dev', 'test'), true)) { 
     $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle(); 
     $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle(); 
     $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle(); 
     $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle(); 
    } 

    return $bundles; 
    } 

    public function registerContainerConfiguration(LoaderInterface $loader) 
    { 
     $loader->load($this->getRootDir().'/config/config_'.$this->getEnvironment().'.yml'); 
    } 
} 

從這個網址https://github.com/djoos/JoosOpenTokBundle

+0

你的意思是說,我通過作曲家安裝opentok,然後我必須爲joosopentok創建包?請問你能解釋我所有的步驟嗎? –

+0

嘿,我改變了按您的反饋,composer.json,appkernel.php和Config.yml 'joos_open_tok: 類:OpenTok 鍵: 「4578792」 天機: 「0ec08800000001f4711011db0e9e72f9ac93」'我使用它, '公共職能的indexAction () {\t \t $ open_tok = $ this-> get('joos_open_tok'); \t \t \t \t var_dump($ open_tok); \t \t return array(「response」=>「W」); }' 給我錯誤:'致命錯誤:類'OpenTok'找不到','試圖從全局命名空間加載類「OpenTok」。 您是否忘記了「OpenTok \ OpenTok」的「使用」聲明?' –

+0

從symfony安裝中執行此命令的結果如下:** php app/console container:debug **?列表中的服務是joos_open_tok嗎? – Edu

相關問題