ModelLoader v modulech nenajde své modely
- ybznek
- Člen | 10
Snažím se zprovoznit ModelLoader, problém je, že využívám moduly a
modelLoader mi neumí najít potřebné modely.
pokud upravím řádek v ModelLoader.php
$class = 'Models\\' . ucfirst($name);
na
$class = 'PluginModule\Models\\' . ucfirst($name);
tak to funguje, budu to ovšem potřebovat i pro jiné moduly.
Podotýkám, že jsem začátečník…
Jak byste to řešili elegantně vy?
- davidm
- Člen | 81
Třeba si můžeš zaregistrovat těch loaderů víc pro různá namespace. Stačí si ho upravit nějak takhle …
class ModelLoader extends ...
{
private $namespace;
public function __construct(Container $container, $namespace)
{
// .......
$this->namespace = $namespace;
}
public function getModel($name)
{
// ...
$class = $this->namespace . '\Models\\' . ucfirst($name);
// ...
}
a pak v config.neon
pluginLoader:
class: ModelLoader
arguments: [@container, 'PluginModule']
pageLoader:
class: ModelLoader
arguments: [@container, 'PageModule']
- ybznek
- Člen | 10
Využívám lib. ModelLoader.
<?php
//app/presenters/BasePresenter.php
final public function getModels() {
return $this->context->modelLoader;
}
?>
ostatní presentery odvozuju od tohodle BasePresenteru a dělá to stejný problém; hledá to modely v tom app/models/
Editoval ybznek (20. 11. 2011 22:22)
- JuniorJR
- Člen | 181
ybznek napsal(a):
Využívám lib. ModelLoader.
<?php //app/presenters/BasePresenter.php final public function getModels() { return $this->context->modelLoader; } ?>
ostatní presentery odvozuju od tohodle BasePresenteru a dělá to stejný problém; hledá to modely v tom app/models/
Samozřejmě, protože používáš jediný model loader. Řešením je zaregistrování dalších model loaderů, které budou mít nastaven vlastní namespace. Řešení ti napsal davidm o 1 příspěvěk výše.
Editoval JuniorJR (5. 12. 2011 13:55)