Comment charger une bibliothèque personnalisée dans Zend Framework 2?
J'ai suivi ce guide (http://socialsemanticweb.blogspot.com.au/2012/11/zend-framework-2-create-custom-library.html) mais je ne peux pas obtenir Zend pour voir ma bibliothèque (message d'erreur ci-dessous).
Les idées de ce que pourrait être mal? grâce
mon dossier structure
mon MyLibraryController.php
<?php
namespace MyLibrary\Mvc\Controller;
use Zend\Mvc\Controller\AbstractActionController;
class MyLibraryController extends AbstractActionController {
public function __construct() {
}
public function doSomething() {
//instantiate your model here and return result
$result = "test";
return $result;
}
}
mon autoload_namespaces.php (à l'intérieur du vendeur\compositeur)
<?php
//autoload_namespaces.php generated by Composer
$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
'Zend\\' => $vendorDir . '/zendframework/zendframework/library/',
'ZendTest\\' => $vendorDir . '/zendframework/zendframework/tests/',
'Symfony\\Component\\Console\\' => $vendorDir . '/symfony/console/',
'Doctrine\\ORM' => $vendorDir . '/doctrine/orm/lib/',
'Doctrine\\DBAL' => $vendorDir . '/doctrine/dbal/lib/',
'Doctrine\\Common' => $vendorDir . '/doctrine/common/lib/',
'DoctrineORMModule\\' => $vendorDir . '/doctrine/doctrine-orm-module/src/',
'DoctrineORMModuleTest\\' => $vendorDir . '/doctrine/doctrine-orm-module/tests/',
'DoctrineModule\\' => $vendorDir . '/doctrine/doctrine-module/src/',
'DoctrineModuleTest\\' => $vendorDir . '/doctrine/doctrine-module/tests/',
'MyLibrary\\' => $vendorDir . '/MyLibrary/library/',
);
mon application.config.php (j'ai seulement ajouté les MyLibrary entrée. J'ai essayé avec et sans qu'il)
<?php
return array(
//This should be an array of module namespaces used in the application.
'modules' => array(
'Application',
'DoctrineModule',
'DoctrineORMModule',
'Directory',
'Helpers',
'MyLibrary',
message d'erreur sans ajout de MyLibrary module dans application.config.php
Fatal error: Class 'Directory\Controller\MyLibaryController' not found in D:\work\eclipse\htdocs\directory\module\Directory\src\Directory\Controller\DirectoryController.php on line 17
message d'erreur avec MyLibrary entrée de module dans application.config.php
Fatal error: Uncaught exception 'Zend\ModuleManager\Exception\RuntimeException' with message 'Module (MyLibrary) could not be initialized.' in D:\work\eclipse\htdocs\directory\vendor\zendframework\zendframework\library\Zend\ModuleManager\ModuleManager.php:175 Stack trace: #0 D:\work\eclipse\htdocs\directory\vendor\zendframework\zendframework\library\Zend\ModuleManager\ModuleManager.php(149): Zend\ModuleManager\ModuleManager->loadModuleByName(Object(Zend\ModuleManager\ModuleEvent)) #1 D:\work\eclipse\htdocs\directory\vendor\zendframework\zendframework\library\Zend\ModuleManager\ModuleManager.php(90): Zend\ModuleManager\ModuleManager->loadModule('MyLibrary') #2 [internal function]: Zend\ModuleManager\ModuleManager->onLoadModules(Object(Zend\ModuleManager\ModuleEvent)) #3 D:\work\eclipse\htdocs\directory\vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(468): call_user_func(Array, Object(Zend\ModuleManager\ModuleEvent)) #4 D:\work\eclipse\htdocs\directory\vendor\zendframework\zendframework\library in D:\work\eclipse\htdocs\directory\vendor\zendframework\zendframework\library\Zend\ModuleManager\ModuleManager.php on line 175
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, il n'est pas un module, de sorte que le message d'erreur que vous obtenez en l'ajoutant les modules de la matrice de l'application de la config est à prévoir.
Édition
autoload_namespaces.php
pour ajouter à votre bibliothèque (que vous avez déjà) devrait fonctionner.Cela dit, une bonne façon est d'ajouter la
autoload
touche à la racine de votre compositeur.fichier json et de faire de la cartographie, il yAprès avoir fait cela, à partir de la ligne de commande exécuter
composer.phar update
, et il ajoutera automatiquement à votre bibliothèque de la autoload_namespaces fichier pour vous. Faire de cette façon signifie que vous n'avez pas à modifier manuellement le fichier à chaque fois que vous mettez à jour votre d'autres bibliothèques avec le compositeur.À l'erreur elle-même
Je suppose qu'avec le chargement automatique pris en charge, il vous manque juste un
use
déclaration dans votreDirectoryController
classe