Ako dostať model do presenteru?
- Čamo
- Člen | 798
Vitajte,
a ak môžte vysvetlite mi prosím niekto čo robím zle, pri vytváraní a
používaní modelu.
Tracy hlási:
Nette\DI\ServiceCreationException
No service of type App\Presenters\App\Model\MainModel found. Make sure the type hint in App\Presenters\RegistPresenter::__construct() is written correctly and service of this type is registered
V config.neon mám:
services:
- App\RouterFactory
router: @App\RouterFactory::createRouter
- App\Model\MainModel
Do presenteru sa to snažím dostať takto:
namespace App\Presenters;
use Nette,
Nette\Security\Passwords,
Nette\Diagnostics\Debugger;
/**
* Registration presenter.
*/
class RegistPresenter extends \App\Presenters\BasePresenter
{
/** @var Nette\Database\Context */
private $database;
/** @var App\Model\MainModel */
private $mainModel;
public function __construct(Nette\Database\Context $database, App\Model\MainModel $mainModel)
{
$this->database = $database;
$this->mainModel = $mainModel;
}
...
A ten model vyzerá takto:
namespace App\Model;
use Nette,
Nette\Diagnostics\Debugger,
App\Model\Exceptions;
/**
*Main model class
*@method RegisterUser
*/
class MainModel
{
/** @var Nette\Database\Context */
private $database;
public function __construct(Nette\Database\Context $database)
{
$this->databse = $database;
}
...
Snažím sa to robiť presne podľa: https://github.com/…resenter.php
Môže mi s tým niekto poradiť?
Díky!
Editoval Čamo (9. 7. 2014 15:04)
- Čamo
- Člen | 798
Ok teraz to funguje. Díky. Ma to samozrejme napadlo s tým lomítkom, ale bola tam ešte iná chyba, ktorá mi to rozbíjala…
Ale nechápem, prečo to v tomto príklade funguje bez toho lomítka: https://github.com/…resenter.php
Tam by to predsa malo hádzať presne takú istú chybu. Toto mi vie niekto
vysvetliť?
- David Matějka
- Moderator | 6445
Ne, opravdu uz jsem si to nemohl odpustit…
https://forum.nette.org/…ualpaginator#…
https://forum.nette.org/…ity-password#…
https://forum.nette.org/…tovat-moduly#…
https://forum.nette.org/…o-presenteru#…
V tom presenteru v examplech je na zacatku use App\Model
- Čamo
- Člen | 798
To ja chápem ale nieje ľahké prekročiť svoj tieň. Fakt robím maximum. Snažím sa mať v hlave celú dokumentáciu Nette, čítam anglickú dokumentáciu, ktorú si myslím, že chápem(ale nechápem) a ešte rozmýšľať nad štruktúrou projektu. To je na začiatočníka dosť nie?
PS:Dnes už teda otázku prečo mi nefunguje $form->addError() nepoložím.
Editoval Čamo (9. 7. 2014 16:10)
- Pavel Macháň
- Člen | 282
Čamo napsal(a):
To ja chápem ale nieje ľahké prekročiť svoj tieň. Fakt robím maximum. Snažím sa mať v hlave celú dokumentáciu Nette, čítam anglickú dokumentáciu, ktorú si myslím, že chápem(ale nechápem) a ešte rozmýšľať nad štruktúrou projektu. To je na začiatočníka dosť nie?
PS:Dnes už teda otázku prečo mi nefunguje $form->addError() nepoložím.
@Čamo Ono je sice pěkné, že máš v hlavě celou dokumentaci Nette, ale ono se to chce spíš naučit základy jazyka ve kterém píšeš.
BTW: Klidně se na $form->addError() zeptej :)
Editoval Pavel Macháň (9. 7. 2014 16:24)
- Mysteria
- Člen | 797
Základy jazyka se myslí to, aby jsi se nejdřív naučil psát v čistém PHP, pochopil jmenné prostory, objektový model, dědičnost, rozhraní a podobně. Bez toho se prostě nehneš a budeš mít problém nesouvisející s frameworkem takovým ať už budeš psát v Nette nebo v čemkoliv jiným.
- Filip Procházka
- Moderator | 4668
Myslím si, že 80% tvých problémů by vyřešilo použití IDE, protože IDE by ti řeklo, kdybys používat třídu a měl blbě namespace, protože by podle něj neexistovala.
Podívej se na tohle a začni používat PhpStorm.