2017-02-22 105 views
0

Я использую мини-php MVC. Переменные от bootstrap не включены в сгенерированный view. Я могу включить entityManager в index.php, , но я не могу включить entityManager для просмотра файлов. Зачем? Как включить администратор сущности доктрины в файлы, созданные View?Как включить администратор сущности доктрины в файлы, созданные View?

Как включить диспетчер объектов в _register1Db.php файл ниже? Вид отображается правильно, он не показывает ошибок, которые bootstrap.php не найден (если указан путь chaneg, такая ошибка отображается), но представление не включает диспетчер сущностей из 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 \ security \ register.php

include ('_register1Db.php'); 

// 4. SRC \ 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 ядро ​​\ view.php

ob_start(); 
include_once(__DIR__.'/../bootstrap.php'); 
include_once($this->viewTemplatePath.$this->file); 
ob_end_flush(); 

// Генерация вид с отладочных переменных из начальной загрузки .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 

ответ

0

Это решение, чтобы заставить все работать, но не ответ.

Решение было создать файл 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, который отображает файлы вида, тогда как указанные файлы просмотра не включают загрузку во второй раз, поскольку он выглядит, что bootstrap уже включен, хотя переменные недоступны?

В чем может быть причина?