http Request – jak na nej? Creating default object from empty value
- Martin67
- Člen | 6
Zdravím všechny,
pokouším se zpracovat hodnoty httpRequest. Bohužel neuspěšně. Zkusil
jsem 3 přístupy. viz.. níže. bodužel nemám dost zkušeností, s DI
containerem, žádné, tak jsem to nedal.
Vždy jsem se dostal do stejné situace „Creating default object from empty
value“. Chápu to tak, že volání nějak správně neinicializuji či
nevolám.
Díky za pomoc předem..
1) Vytvoření a použití DI/Containeru pro volání funkce container->getByType(‚Nette\Http\Request‘)
namespace App\Presenters;
use Nette;
use App\Model;
use Nette\DI\Container;
class SitePresenter extends BasePresenter
{
public function renderDefault()
{
$container = new Container;
$template->httpRequest =
$container->getByType(‚Nette\Http\Request‘);
…
nejede
2) Metoda getHttpRequest dostupná v presenteru
namespace App\Presenters;
use Nette;
use App\Model;
use Nette\DI\Container;
class SitePresenter extends BasePresenter
{
public function renderDefault()
{
$template->httpRequest=$this->getHttpRequest();
…
nejede
3) pokud o inicializaci containeru konstruktorem (rozpracování pokusu 1))
namespace App\Presenters;
use Nette;
use App\Model;
use Nette\DI\Container;
class SitePresenter extends BasePresenter
{
/** @var Nette\DI\Container */
protected $container;
public function __construct(Nette\DI\Container $container)
{
parent::__construct($container);
$this->container = $container;
}
public function renderDefault()
{
$template->httpRequest = $this->container->getByType(‚Nette\Http\Request‘);
…
nejede
Díky moc za odpověď předem a zdravím
- CZechBoY
- Člen | 3608
Začal bych tím, že popíšeš problém, který řešíš. Pak když už bys měl vkládat nějaký zdrojáky tak je pls formátuj, ať se to dá číst.
Pokusim se odpovědět na to co si psal (asi odpovim na něco jinýho).
HttpRequest se zpracuje pomocí Routeru a vytvoří se AppRequest, zavolá se
presenter a presenter vytvoří response (většinou šablona nebo json).
O kterou část se teď snažíš?
Nicméně v presenteru máš vždycky DIC (dependency injection
container) k dispozici v $this->context
.
A taky máš k dispozici HttpRequest v
$this->getHttpRequest()
.
Doporučuju si přečíst jak funguje aplikace v Nette: https://doc.nette.org/…n/presenters#…
Ještě doplním k tvému bodu 2: proč by někdo chtěl mít celej httpRequest v šabloně? Asi řešíš něco co už je vyřešené.
@ViPEr*CZ* $this->getRequest()
vrací aplikační
request nikoli HttpRequest! viz. životní cyklus aplikace.
Editoval CZechBoY (5. 2. 2017 13:47)
- Jan Mikeš
- Člen | 771
Ahoj, chybová hláška Creating default object from empty value
se vůbec netýká http requestu – chyba je v tom, že používáš
proměnnout $template
, kterou nikde nevytváříš. Pro předání
dat do šablony v presenterech používej
$this->template->...
.
Editoval Jan Mikeš (5. 2. 2017 15:57)
- ViPEr*CZ*
- Člen | 817
@CZechBoY: no to jo… nechtěl jsem, aby to zaměňoval… spíše
jsem nevěděl co hledá, takže pokus… co kdyby tam našel co hledá.
Nicméně koukám, že jsme si nevšimli stejně čeho si všiml
@JanMikeš :-) což mě vede k tomu co jsi psal a to, že by měl
dotyčný příště použít formátování pro zdrojáky ;-)