0

I have decided to adopt this directory structure in Zend:

application
    doctrine
        models
            base
        schema
        //other Doctrine directories
    controllers
    models
    services
    views

And I have set this as the configuration options for Doctrine_Cli:

doctrine.cli_options.models_path = APPLICATION_PATH "/doctrine/models/"
doctrine.cli_options.data_fixtures_path = APPLICATION_PATH "/doctrine/data/fixtures"
doctrine.cli_options.sql_path = APPLICATION_PATH "/doctrine/data/sql"
doctrine.cli_options.yaml_schema_path = APPLICATION_PATH "/doctrine/schema"
doctrine.cli_options.migrations_path = APPLICATION_PATH "/doctrine/migrations"
doctrine.cli_options.generate_models_options.generateTableClasses = true
doctrine.cli_options.generate_models_options.generateBaseClasses = true
doctrine.cli_options.generate_models_options.pearStyle = true
doctrine.cli_options.generate_models_options.baseClassPrefix = 'Base_'
doctrine.cli_options.generate_models_options.baseClassName = 'Doctrine_Record'
doctrine.cli_options.generate_models_options.baseClassesDirectory = ''
doctrine.cli_options.generate_models_options.classrefixFiles = false 
doctrine.cli_options.generate_models_options.classPrefix = 'Application_Doctrine_Model_'

I have also added a resource to the Application namespace to load Application_Doctrine_Model_* files from application/doctrine/models

My problem is, that although the generated models were created with the intended prefixes, they are generated under the application/doctrine/models/base directory under their own Application/ .. sub-directory.

The result is application/doctrine/models/Application/Doctrine/Models/..., thus, Zend's resource autoloader can't find them.

Is there a configuration option for Doctrine_Cli to specify that I want to generate the models under application/doctrine/models but not to generate a new Application/ .. PEAR-style subdirectory?

hakre
  • 193,403
  • 52
  • 435
  • 836
Bez Hermoso
  • 1,132
  • 13
  • 20

1 Answers1

1

change your classPrefix to :

doctrine.cli_options.generate_models_options.classPrefix = 'Model_'

and you have typo error in classrefixFiles:

doctrine.cli_options.generate_models_options.classPrefixFiles = false 

to load generated models use this construction on your bootstrap.php

public function _initLoaders()
{
    new Zend_Application_Module_Autoloader(array(
        'basePath'  => APPLICATION_PATH,
        'namespace' => ''
    ));
}
b.b3rn4rd
  • 8,494
  • 2
  • 45
  • 57
  • This generates the models under `application/models/Models`; but most importantly the classes are named `Model_*`, not `Application_Doctrine_Model_*`. So still, Zend can't see them. – Bez Hermoso Apr 05 '12 at 13:46
  • you have typo classPrefixFiles, models will be generated under application/models with prefix Model_* and loaded by def – b.b3rn4rd Apr 05 '12 at 13:52
  • Oh, man. That's embarassing. Thanks for pointing it one. It's working now. :) – Bez Hermoso Apr 06 '12 at 08:08