V návaznosti na otázku Generovanie šablón:

Keď dumpnem Application v konštruktori commandu, nedá sa mi získať presenter, je NULL. Tu je dump, ktorý možno pomôže. Ako sa k nemu prosím dopracujem? :)

Workflow je takové, že se zavolá Nette\...\Application::run(), v něm je CliRouter který přebere řízení a vytvoří request na presenter Kdyby:Cli, ten se vytvoří a spustí Symfony\...\Console\Application, ktery uz dal dela co ma…

Takhle složité to je, aby tam ten presenter byl přístupný, navíc Cli vždy spouštíš ty nebo cron a těch pár ms navíc nikomu neublíží.

Otázka tedy je, co se v tom procesu nepovedlo, protože pokud by se to povedlo, tak po injectnutí Application do Commandu, bys měl být schopný vždy získat ten CliPresenter z Kdyby.

Ukaž index.php přes který spouštíš cli, bootstrap, configy bez hesel a ten tvůj command.

Hm, takže miesto Nette\..\Application by som mal v konštruktore dostať inštanciu Symfony App? Relevantné súbory na giste.

  • Comments:

  • Chybí ti tam ten command

    by Filip Procházka at 16.7.2014 22:17
  • Hm, už vidím čo mi robí problém, ale neviem prečo. Do commandu si injectujem MailFactory, ktorá v konštruktore vyžaduje Nette\..\Application, ale vtedy tam presenter nie je. Keď si tú istú Application class injectnem priamo do Commandu(nie obkľukou), nachádza sa v nej Kdyby presenter. Je to niečo, čo mám eliminovať setterom na MailFactory(pragmatické, ale menej čisté) alebo sa v tom viacej vŕtať(ak to je možné vyriešiť)?

    by Jakub Jarabica at 17.7.2014 0:01
  • Proč mám pocit, že se na presenter snažíš sahat už v konstruktoru přes application, místo toho abys to dělal až v té metodě třídy kde ho skutečně potřebuješ?

    by Filip Procházka at 17.7.2014 4:29
  • Áno, šahám naň trochu skorej ako by som pod konzolou musel, ale nechcem porušovať zapúzdrenie MailFactory, ktorú používam aj v HTTP frontende, kde to funguje ako má. Hackol som to tým, že som urobil voliteľný setter v MailFactory a presenter posielam až v metóde execute().

    by Jakub Jarabica at 18.7.2014 11:33

Rozhodně ne, psal jsem ti to už v předchozím tématu

class MyCommand extends Command
{
    /** @var \Nette\Application\Application @inject */
    public $app;
  • Comments:

  • Mea culpa, nepozornost.

    by Jakub Jarabica at 16.7.2014 23:35

You must first log in to participate in this discussion