Problém s přístupem k funkci v presenteru
- safik
- Člen | 11
Mám funkci v modelu, kde vůbec nepracuji s databází.
public function getClassrooms(){
$data=[];$tridy=[];
if (($handle = fopen("./repositoryV3.csv","r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
if((in_array($data[3],$tridy))==false ){
$tridy[]=$data[3];
}
}
fclose($handle);
return ($tridy);
}
}
Jak se k ni dostat v presenteru? Vím že kdyby byla ta fce statická tak stačí napsat
$this->template->dataClrs = Model\MorpheusModel::getClassrooms();
ale staticky to nechci. Děkuji za rady
- David Matějka
- Moderator | 6445
https://doc.nette.org/…dependencies
(pred injectnutim musis registrovat jako sluzbu)
- safik
- Člen | 11
Tak jsem to teď zkoušel. Mám to takto:
/** @var \App\Model\MorpheusModel */
public $model;
public function __construct(\App\Model\MorpheusModel $mod) {
$this->$model = $mod;
}
v neonu mam
services:
- App\Model\UserManager
- App\Forms\SignFormFactory
router: App\RouterFactory::createRouter
morpheusmodel: App\Model\MorpheusModel
vzpiuje mě to toto: Found sections ‚morpheusmodel‘ in configuration, but corresponding extensions are missing. Nevím co s tím. Tuším jsem to vůbec nepobral…
- Pavel Kravčík
- Člen | 1196
A když se zeptám hloupě k tomuto tématu, proč to musí injectovat, pokud to není na ničem závislé? Já třeba na dvě tři třídy používám toto. Neviděl jsem důvod to cpát do containeru, pokud to tam není potřeba. Třeba se pletu a někdo fundovanější mi to vysvětlí. :)
private $StoreManager;
public function __constructor()
{
$StoreManager = new \App\Ext\StoreManager();
}
public function randomFunc($id)
{
//...
$this->StoreManager($id);
}
- David Matějka
- Moderator | 6445
@kzk_cz napr:
- pri pridavani funkcnosti nebo refaktoringu muze zavislost vzniknout – pak to budes muset upravovat vsude, kde to vytvaris
- horsi testovani – nemuzes tam poslat mock
- Pavel Kravčík
- Člen | 1196
@DavidMatějka: Díky. V té mojí situaci (a možná i safikovo) není asi potřeba to injectovat tedy. Přesně to používám při načítání CSV a podobných nesmyslů. Většinou jednorázová akce, která nemá žádné Nette závilosti.