2016-07-06 22 views
0

Paketname: Open tok (i es von Github heruntergeladen)Erste Fehler in Add Bundle in Vendor Ordner in Symfony2

i setzen, dass Ordner in Vendor-Ordner von Symfony (Projektname \ Anbieter \ OpenTok \ OpenTok \ und alle Dateien und Ordner hier)

in 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'); 
    } 
} 

in app \ 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" 
    }, 

Das obige Code gibt mir Fehler:

Fatal error: Class 'OpenTokBundle\OpenTokBundle' not found

jetzt, wie ich Bundle verwenden opentok kann meine alle anderen Dateien in? Bitte helfen Sie mir. Ich bin neu in Symfony

Antwort

1

Ihr Problem ist aufgrund des Schrägstrichs.
Es sollte $loader->add('OpenTok' => __DIR__.'/../vendor/OpenTok'); wie in der anderen Zeile sein (obwohl ich nicht sicher bin, der tatsächliche Pfad wäre korrekt).

Das besagt, dass Sie das Paket tatsächlich mit Composer herunterladen und verwalten sollten, da es Abhängigkeiten aufweist, die nicht durch das Herunterladen des Repositorys enthalten sind.

dies zu tun:

  1. löschen $loader->add('OpenTok' => __DIR__.'/..vendor/OpenTok'); Linie von Ihrem Autoload
  2. "opentok/opentok": "^2.3.2" hinzufügen oder die Version, die Sie
  3. Run composer update opentok/opentok zu Ihrem "require" Schlüssel in Ihrer composer.json herunterladen möchten.

Das Paket und Klassen sollten nun in der Anwendung zur Verfügung stehen und, wenn Sie eine neuere Version benötigen, können Sie sie alle durch Komponisten verwalten können, anstatt um das Paket mit der Hand (zusammen mit allen Abhängigkeiten) zum Download bereit.

+0

Leider Sir, aber im neuen zu symfony, kann ich verstehen, bekommen nicht 2. und 3. Punkte –

+0

Plssee meine Edits in Frage –

+0

Sie bereits 'opentok/opentok 'in deinem composer.json. Hast du einen Komponisten auf deiner Maschine? Wenn nicht, öffnen Sie das Terminal, gehen Sie zum Stammverzeichnis Ihrer Symfony-Anwendung und installieren Sie es (siehe https://getcomposer.org/download/). Dann im Terminallauf 'php composer.phar update opentok/opentok'. Weitere Informationen über den Composer finden Sie unter https://getcomposer.org/doc/01-basic-usage.md – qooplmao

1

Ich denke, Sie sollten alle mit Komponisten verwalten, und Sie müssen die Bibliothek opentok/opentok und das Bündel für symfony joos/opentok Bündel so in Ihrem composer.json installieren ..

.
"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" 
    }, 

Run Komponist

Und in Ihrem AppKernel installieren.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'); 
    } 
} 

von dieser URL https://github.com/djoos/JoosOpenTokBundle

+0

Sie meinen, ich installiere Opentok über Composer und dann muss ich ein Bundle für Joosopentok erstellen? können Sie mir bitte alle Schritte erklären. –

+0

hey i geändert, wie pro Ihr Feedback, composer.json, appkernel.php und config.yml 'joos_open_tok: Klasse: OpenTok Schlüssel: "4578792" Geheimnis: "0ec08800000001f4711011db0e9e72f9ac93"' ich es verwenden, 'public function index() {\t \t $ open_tok = $ this-> get ('joos_open_tok'); \t \t \t \t var_dump ($ open_tok); \t \t Array zurückgeben ("Antwort" => "W"); } ' gib mir Fehler:' Fataler Fehler: Klasse 'OpenTok' nicht gefunden ',' Versucht, die Klasse "OpenTok" aus dem globalen Namespace zu laden. Haben Sie eine Anweisung "use" für "OpenTok \ OpenTok" vergessen? ' –

+0

Was ist das Ergebnis der Ausführung dieses Befehls von Ihrer Symfony-Installation: ** php app/console container: debug **? Ist der Dienst joos_open_tok in der Liste? – Edu