* configurable model search path

* extended documentation
This commit is contained in:
Michael Heiniger 2013-04-11 10:37:16 +02:00
parent ed71a9f1be
commit fc94f5f681
4 changed files with 32 additions and 4 deletions

View file

@ -64,8 +64,7 @@ abstract class AbstractDataHandler
if (0 === count($this->dbMap->getTables())) {
$finder = new Finder();
$files = $finder->files()->name('*TableMap.php')
->in($this->getRootDir() . '/../src/')
->in($this->getRootDir() . '/../vendor/')
->in($this->getModelSearchPath($connectionName))
->exclude('PropelBundle')
->exclude('Tests');
@ -121,4 +120,24 @@ abstract class AbstractDataHandler
return null;
}
/**
* Gets the search path for models out of the configuration.
*
* @param string $connectionName A connection name.
*/
private function getModelSearchPath($connectionName) {
$configuration = Propel::getConfiguration();
$searchPath = array();
if (!empty($configuration['datasources'][$connectionName]['connection']['model_paths'])) {
$modelPaths = $configuration['datasources'][$connectionName]['connection']['model_paths'];
foreach ($modelPaths as $modelPath) {
$searchPath[] = $this->getRootDir() . '/../' . $modelPath;
}
} else {
$searchPath[] = $this->getRootDir() . '/../';
}
return $searchPath;
}
}

View file

@ -232,6 +232,12 @@ class Configuration implements ConfigurationInterface
->prototype('scalar')->end()
->end()
->end()
->fixXmlConfig('model_path')
->children()
->arrayNode('model_paths')
->prototype('scalar')->end()
->end()
->end()
->fixXmlConfig('attribute')
->children()
->arrayNode('attributes')

View file

@ -123,7 +123,7 @@ class PropelExtension extends Extension
$c['datasources'][$name]['slaves']['connection'] = $conf['slaves'];
}
foreach (array('dsn', 'user', 'password', 'classname', 'options', 'attributes', 'settings') as $att) {
foreach (array('dsn', 'user', 'password', 'classname', 'options', 'attributes', 'settings', 'model_paths') as $att) {
if (isset($conf[$att])) {
$c['datasources'][$name]['connection'][$att] = $conf[$att];
}

View file

@ -110,10 +110,13 @@ propel:
settings:
charset: { value: UTF8 }
queries: { query: 'INSERT INTO BAR ('hey', 'there')' }
model_paths:
- /src/Acme/DemoBundle/Model/
- /vendor/
```
`options`, `attributes` and `settings` are parts of the runtime configuration. See [Runtime Configuration File](http://www.propelorm.org/reference/runtime-configuration.html) documentation for more explanation.
`model_paths` can be defined to speed up searching for model data. By default it searches in the whole project from project root.
## Logging ##