Я использую мини php MVC. Переменные от bootstrap
не включены в сгенерированный view
, Я могу включить entityManager
в index.php
,
но я не могу включить entityManager
для просмотра файлов. Зачем? Как включить менеджер сущностей доктрины в файлы, созданные с помощью View?
Как включить менеджер сущности в _register1Db.php
файл ниже?
Представление отображается правильно, в нем не отображаются ошибки, что bootstrap.php не найден (если я изменяю путь, отображается такая ошибка), но представление не включает в себя менеджер сущностей из bootstrap.php
// 1. \ SRC \ bootstrap.php
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
$isDevMode = true;
$entitiesPaths = array(__DIR__.'/CrmBundle/Entity');
$dbParams = array(
'dbname' => 'dbname',
'user' => 'user',
'password' => 'pswd',
'host' => 'localhost',
'driver' => 'pdo_mysql',
); // 'pdo_mysql',$config = Setup::createAnnotationMetadataConfiguration($entitiesPaths, $isDevMode);
$em = \Doctrine\ORM\EntityManager::create($dbParams, $config);
$some='some';
// 2. \ Public \ index.php
require_once '../src/bootstrap.php'; //which requires autoload.php
print_r('<br><br> index some='.$some); // works
var_dump($em); //works
use core\App;
$app = new App(); //App from urk identifines controller and action and pass url paramteters to them, controller action analize parameters and displays views, in this case security\register
// 3. SRC \ CrmBundle \ Resources \ Views \ безопасность \ register.php
include ('_register1Db.php');
// 4. ЦСИ \ CrmBundle \ Resources \ Views \ security_register1Db.php
require_once '/../../../../bootstrap.php'; //
var_dump($em); // Undefined variable: em
print_r('<br><br> register some='.$some); //Undefined variable: some
// То, как я генерирую представление: src \ core \ View.php
ob_start();
include_once( __DIR__.'/../bootstrap.php' );
include_once( $this->viewTemplatePath.$this->file );
ob_end_flush();
// просмотр генерации с отладочными переменными из bootstrap.php: src \ core \ View.php
include_once( __DIR__.'/../bootstrap.php' );
ob_start();
// think how to render extract variable in order to pass to the file
include_once( __DIR__.'/../bootstrap.php' );
var_dump($em); //undefined
print_r('<br><br> parseViewPhpinside some=' . $some); //undefined
print_r('<br><br> parseViewPhpinside __DIR__=' . __DIR__); // ....apache2\htdocs\own\log\src\core
include_once( $this->viewTemplPath.$this->file );
if($store) return ob_get_clean();
else ob_end_flush();
var_dump($em); //undefined
print_r('<br><br> parseViewPhp some='.$some); //undefined
Это решение заставить вещи работать, но не ответ.
Решение было создать файл dbcon.php
и включить его в register.php
или же register1Db.php
,
// содержимое dbcon.php
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
$isDevMode = true;
$entitiesPaths = array(__DIR__.'/CrmBundle/Entity');
$dbParams = array(
'dbname' => 'dbname',
'user' => 'user',
'password' => 'pswd',
'host' => 'localhost',
'driver' => 'pdo_mysql',
); // 'pdo_mysql',
$config = Setup::createAnnotationMetadataConfiguration($entitiesPaths, $isDevMode);
$em = \Doctrine\ORM\EntityManager::create($dbParams, $config);
print_r('<br><br> end of dbcon.php ');
Я не понимаю, почему не работает, если я включаю bootsrap.php?
Но это работает, если я включаю аналогичное содержимое из другого файла.
Возможно, потому что я уже включил его один раз в index.php, который создает объект App.php, который отображает файлы представлений, тогда как упомянутые файлы представлений не включают в себя bootsrap во второй раз, потому что похоже, что bootstrap уже включен, хотя переменные недоступны ?
Что может быть причиной?
Других решений пока нет …