Использование Doctrine с модульной компоновкой Zend Framework - PullRequest
0 голосов
/ 05 марта 2011

У меня не очень стандартная компоновка для моего приложения на Zend Framework.Я реализую модули, но в то же время я только явно создал модуль по умолчанию.Вот ссылка на скриншот макета приложения [1]: http://img846.imageshack.us/f/projecttree.jpg/. Я также использую Doctrine 1.2.Когда я делаю $ ./doctrine build-all-reload.Я получаю следующую ошибку:

PHP Fatal error:  Cannot redeclare class Gepm_Model_Base_Account in      /shared/www/gepm2/library/Gepm/Model/Base/Account.php on line 73
PHP Stack trace:
PHP   1. {main}() /shared/www/gepm2/application/scripts/doctrine:0
PHP   2. include() /shared/www/gepm2/application/scripts/doctrine:4
PHP   3. Doctrine_Cli->run() /shared/www/gepm2/application/scripts/doctrine.php:30
PHP   4. Doctrine_Cli->_run() /shared/www/gepm2/library/Doctrine/Cli.php:452
PHP   5. Doctrine_Cli->executeTask() /shared/www/gepm2/library/Doctrine/Cli.php:498
PHP   6. Doctrine_Task_BuildAllReload->execute() /shared/www/gepm2/library/Doctrine/Cli.php:516
PHP   7. Doctrine_Task_LoadData->execute() /shared/www/gepm2/library/Doctrine/Task/BuildAllReload.php:56
PHP   8. Doctrine_Core::loadData() /shared/www/gepm2/library/Doctrine/Task/LoadData.php:43
PHP   9. Doctrine_Data->importData() /shared/www/gepm2/library/Doctrine/Core.php:1001
PHP  10. Doctrine_Data_Import->doImport() /shared/www/gepm2/library/Doctrine/Data.php:222
PHP  11. Doctrine_Data->purge() /shared/www/gepm2/library/Doctrine/Data/Import.php:115
PHP  12. Doctrine_Core::getLoadedModels() /shared/www/gepm2/library/Doctrine/Data.php:263
PHP  13. Doctrine_Core::filterInvalidModels() /shared/www/gepm2/library/Doctrine/Core.php:720
PHP  14. Doctrine_Core::isValidModelClass() /shared/www/gepm2/library/Doctrine/Core.php:767
PHP  15. class_exists() /shared/www/gepm2/library/Doctrine/Core.php:788
PHP  16. Doctrine_Core::modelsAutoload() /shared/www/gepm2/library/Doctrine/Core.php:0

В папке сценария у меня есть два файла доктрины с содержанием:

#!/usr/bin/env php
<?php
chdir(dirname(__FILE__));
include('doctrine.php');

, а другой файл doctrine.php содержит:

<?php

// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/..'));

// Define application environment
 defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'development'));

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));

/** Zend_Application */
require_once 'Zend/Application.php';

// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);

$application->getBootstrap()->bootstrap('doctrine');
$config = $application->getOption('doctrine');

$cli = new Doctrine_Cli($config);
$cli->run($_SERVER['argv']);

Как я могу это исправить.

Вторая проблема заключается в следующем:

            $borrowerdetails = $form->getSubForm('borrowerdetails');
            $groupborrower = new Gepm_Model_Borrower();
            $groupborrower->fromArray($borrowerdetails->getValues());
            $groupborrower->save();

Ничего не сохраняется.Однако когда я делаю var_dump ($ loanerdetails-> getValues ​​()), я вижу все значения.Однако var_dump ($ groupborrower) дает мне нулевое значение для всех свойств.Я боролся с этим уже неделю.

1 Ответ

0 голосов
/ 07 марта 2011

Это решение, если для второго вопроса в посте относительно данных не сохраняется. Mridgway на доктрине IRC канал помог мне в этом. В основном, когда вы получаете данные из подчиненной формы, она по-прежнему имеет имя подчиненной формы в качестве корневого ключа, поэтому я должен использовать

$values=$borrowerdetails->getValues();
$groupborrower->fromArray($values[borrowerdetails]);
$groupborrower->save();

Это решило мою проблему для меня. Надеюсь, это поможет.

...