Даже после установки «db» в services.php я получаю исключение.
services.php
$di->set('db', function() use ($config) { $dbclass = 'Phalcon\Db\Adapter\Pdo\\' . $config->database->adapter; return new $dbclass(array( "host" => $config->database->host, "username" => $config->database->username, "password" => $config->database->password, "dbname" => $config->database->name )); });
Я пытаюсь получить пользователей из моей таблицы, как это,
$user = Users::findFirst(1);
В то время это дает
Service 'db' wasn't found in the dependency injection container in Phalcon
:::::::::::::::::::::::::::::::::::Обновить:::::::::::::: ::::::::::::::::::
Здесь я загружаю файл services.php.
общественности / index.php
error_reporting(E_ALL); use Phalcon\Mvc\Application; use Phalcon\Config\Adapter\Ini as ConfigIni; try { define('APP_PATH', realpath('..') . '/'); /** * Read the configuration */ $config = new ConfigIni(APP_PATH . 'app/config/config.ini'); require APP_PATH . 'app/config/loader.php'; require APP_PATH . 'app/config/services.php'; $application = new Application($di); echo $application->handle()->getContent(); } catch (Exception $e){ echo $e->getMessage(); }
++++++++++++++++++++++++++++ обновлений 2 ++++++++++++++++++++ +++++++++++++++++
loader.php
$loader = new \Phalcon\Loader(); /** * We're a registering a set of directories taken from the configuration file */ $loader->registerDirs( array( APP_PATH . $config->application->controllersDir, APP_PATH . $config->application->pluginsDir, APP_PATH . $config->application->libraryDir, APP_PATH . $config->application->modelsDir, APP_PATH . $config->application->formsDir, ) )->register();
services.php
use Phalcon\Mvc\View; use Phalcon\DI\FactoryDefault; use Phalcon\Mvc\Dispatcher; use Phalcon\Mvc\Url as UrlProvider; use Phalcon\Mvc\View\Engine\Volt as VoltEngine; use Phalcon\Mvc\Model\Metadata\Memory as MetaData; use Phalcon\Session\Adapter\Files as SessionAdapter; use Phalcon\Flash\Session as FlashSession; use Phalcon\Events\Manager as EventsManager; /** * The FactoryDefault Dependency Injector automatically register the right services providing a full stack framework */ $di = new FactoryDefault(); /** * We register the events manager */ $di->set('dispatcher', function() use ($di) { $dispatcher = new Phalcon\Mvc\Dispatcher(); return $dispatcher; }); /** * The URL component is used to generate all kind of urls in the application */ $di->set('url', function() use ($config){ $url = new UrlProvider(); $url->setBaseUri($config->application->baseUri); return $url; }); $di->set('view', function() use ($config) { $view = new View(); $view->setViewsDir(APP_PATH . $config->application->viewsDir); $view->registerEngines(array( ".volt" => 'volt' )); return $view; }); /** * Setting up volt */ $di->set('volt', function($view, $di) { $volt = new VoltEngine($view, $di); $volt->setOptions(array( "compiledPath" => APP_PATH . "cache/volt/" )); $compiler = $volt->getCompiler(); $compiler->addFunction('is_a', 'is_a'); return $volt; }, true); /** * Database connection is created based in the parameters defined in the configuration file */ $di->set('db', function() use ($config) { $dbclass = 'Phalcon\Db\Adapter\Pdo\\' . $config->database->adapter; return new $dbclass(array( "host" => $config->database->host, "username" => $config->database->username, "password" => $config->database->password, "dbname" => $config->database->name )); }); /** * If the configuration specify the use of metadata adapter use it or use memory otherwise */ $di->set('modelsMetadata', function() { return new MetaData(); }); /** * Start the session the first time some component request the session service */ $di->set('session', function() { $session = new SessionAdapter(); $session->start(); return $session; }); /** * Register the flash service with custom CSS classes */ $di->set('flash', function(){ return new FlashSession(array( 'error' => 'alert alert-danger', 'success' => 'alert alert-success', 'notice' => 'alert alert-info', )); }); /** * Register a user component */ $di->set('elements', function(){ return new Elements(); });
Я столкнулся с этой проблемой раньше, и исправление было следующим:
У меня было два случая:
$di = new FactoryDefault();
У меня был один в моем index.php и один в моем файле services.php.
Я удалил файл в файле index.php и избавился от этой ошибки.