Dynamické načítání služeb v basePresenter
- Wailey
- Člen | 48
Zdravím vás
dostal jsem se do komplikace k řešení dynamického načítání
služeb|modelů z databáze podle jmen tříd.
Snažím se je načíst pomocí context->addService(jmeno, třída) avšak
nikde nejsou vidět
basePressenter.php
protected function startup() {
parent::startup();
\Tracy\Debugger::$maxDepth = 7;
$this->updates = $this->context->updates;
$pluginServices = $this->updates->getClassType('model');
foreach($pluginServices as $services) {
$class = $services->class;
$this->context->addService($services->class, new $class());
}
...
model vypadá například takto, avšak se trápím i s injekcí Dibi,.. neví někdo, jak na to?
<?php
use Nette\Http\IReques,
Nette\Utils\Strings,
Nette\Utils\DateTime;
class module_item_cover extends \Nette\Object {
/** @var \DibiConnection */
private $db;
private $t_module_item_cover = "module_item_cover";
// jak injektovat Dibi?
public function __construct() {
}
// ADD COVER
public function addCover($cover_id, $title, $description = null, $hyperlink = null) {
return $this->db->insert($this->t_module_item_cover, array(
"cover_id" => $cover_id,
"title" => $title,
"description" => $description,
"hyperlink" => $hyperlink,
"createtime" => new DateTime()
))->execute(dibi::IDENTIFIER);
}
a konečné spojení v nějakém modulu
namespace App\Components;
use Nette\Application\UI;
class plugin_itemCover_admin extends UI\Control {
private $module;
private $id;
public function __construct($id) {
$this->id = $id;
}
public function startup($id) {
//Zde nevím jak zavolat správně službu
//$this->module = $this->presenter->context->module_item_cover;
}
public function render() {
$this->template->setFile(__DIR__ . '/plugin_itemCover_admin.latte');
$this->module->addCover($id,"Zkouška");
$this->template->render();
}
}
Moc děkuji za jakékoliv rady, vcelku jsem se na tom už několik dní sekl, a nevím jak ven.
- Wailey
- Člen | 48
Jiný mě bohužel pro načítání externích balíčků včetně
aktualizací nenapadá. Služba Update je nahozena klasicky staticky
z Configu.
jinak fce getClassType vrací pole dat(včetně názvu třídy)
posledních nainstalovaných aktualizací podle verze.
edit: načítání jsem rozjel, avšak stále problém s injekcí dibi :(
Editoval Wailey (6. 4. 2016 19:01)