At my company I ended up creating a Doctrine integration class with a couple
of special methods:
class My_Doctrine
{
    /**
     * Recursively (and lazily) load all models from a directory or
     * array of directories.
     *
     * @param string|array $directory Models directory or directories
     */
    public static function loadModels($directory);

    /**
     * Returns a table object, used for retrieving sets of records.
     *
     * @param  string $className Class name
     * @param  Doctrine_Connection $connection (Optional) Database
connection (default: null)
     * @return Doctrine_Table
     */
    public static function getTable($className, $connection = null);
}

-Matt

On Thu, Jul 9, 2009 at 10:15 AM, swilhelm <st...@studio831.com> wrote:

>
> I would really like to see an example of Doctrine integrated as a module as
> well.
>
> - Steve W.
>
>
> dbroderick wrote:
> >
> > I am using ZF 1.8.4 and Doctrine 1.1.2 with a module directory setup of
> >
> >
> > +---application
> > |   +---configs
> > |   \---modules
> > |       +---default
> > |       |   +---controllers
> > |       |   \---views
> > |       |       \---scripts
> > |       |           +---error
> > |       |           \---index
> > |       +---error
> > |       |   +---controllers
> > |       |   \---views
> > |       |       \---scripts
> > |       |           \---error
> > |       \---user
> > |           +---controllers
> > |           +---models
> > |           |   \---generated
> > |           \---views
> > |               \---scripts
> > |                   \---index
> > +---library
> > |   \---App
> > |       \---Application
> > |           \---Resource
> > +---public
> > |   +---images
> > |   \---themes
> > |       \---default
> > |           \---css
> > \---tests
> >     +---application
> >     \---library
> >
> >
> > I have a resource file called Doctrine.php in my library folder which
> does
> > the following:
> >
> >
> > $zla = Zend_Loader_Autoloader::getInstance();
> > $zla->unshiftAutoloader( array( 'Doctrine', 'autoload' ), 'Doctrine'
> > )->setFallbackAutoloader( true );
> >
> >
> > $manager = Doctrine_Manager::connection( $this->_getConnectionString() );
> > $manager = Doctrine_Manager::getInstance();
> > $manager->setAttribute( Doctrine::ATTR_MODEL_LOADING,
> > Doctrine::MODEL_LOADING_CONSERVATIVE );
> > $manager->setAttribute( Doctrine::ATTR_PORTABILITY,
> > Doctrine::PORTABILITY_NONE );
> > $manager->setAttribute( Doctrine::ATTR_AUTOLOAD_TABLE_CLASSES, true );
> > $manager->setAttribute( Doctrine::ATTR_USE_DQL_CALLBACKS, true );
> > $manager->setAttribute( Doctrine::ATTR_AUTO_ACCESSOR_OVERRIDE, true );
> >
> >
> > My config xml file has this:
> >
> >
> > --- snip ---
> >
> >
> >         <pluginPaths>
> >
> >
> <App_Application_Resource><![CDATA[App/Application/Resource]]></App_Application_Resource>
> >               </pluginPaths>
> >               <resources>
> >                       <frontController>
> >
> <defaultmodule><![CDATA[default]]></defaultmodule>
> >                               <params>
> >
> <prefixDefaultModule><![CDATA[true]]></prefixDefaultModule>
> >
> >
> <usedefaultcontrolleralways><![CDATA[false]]></usedefaultcontrolleralways>
> >                               </params>
> >                       </frontController>
> >                       <modules>
> >                               <default><![CDATA[default]]></default>
> >                               <error><![CDATA[error]]></error>
> >                               <user><![CDATA[user]]></user>
> >                       </modules>
> >                       <!-- Doctrine application plugin -->
> >               <doctrine>
> >                       <dbtype><![CDATA[dbtype]]></dbtype>
> >                   <dbhost><![CDATA[localhost]]></dbhost>
> >                   <dbname><![CDATA[dbname]]></dbname>
> >                   <dbuser><![CDATA[dbuser]]></dbuser>
> >                   <dbpass><![CDATA[dbpass]]></dbpass>
> >             </doctrine>
> >                       <!-- View application plugin -->
> >                       <view><![CDATA[view]]></view>
> >               </resources>
> >
> >
> > --- snip ---
> >
> >
> > The default Module Autoloader is loaded correctly during bootstrapping,
> > making available the default resource types (form, model, dbtable), but I
> > use Doctrine so dbtable is not used and I would like to insert, override
> > or even replace the default resource type(s) with a folder in models that
> > Doctrine uses which is 'generated'.
> >
> >
> > My preference is that when my Resource Plugin which configures Doctrine
> as
> > my DB layer, also can inject the needed resource type into the default
> > module autoloader, in order to make the configuration available in all
> > modules.
> >
> >
> > I have tried for the past day to get this to work but all of the examples
> > I find are to create a module autoloader in the module bootstrap file
> > which means (as I understand it) that I have to do this for each module
> > bootstrap.
> >
> >
> > I am still new to Zend and struggling a bit with the changes in v1.8, so
> I
> > may have just missed the example that shows how this is done.
> >
> >
> > Of course my ultimate problem here is that when I try to load a model
> > User.php in the models folder which extends generated\BaseUser.php, the
> > BaseUser class is not found.
> >
> > Thanks,
> > David
> >
>
> --
> View this message in context:
> http://www.nabble.com/Zend-Framework-%2B-Doctrine-Module-Autoloader-issue-tp24392765p24414344.html
> Sent from the Zend Framework mailing list archive at Nabble.com.
>
>

Reply via email to