Jak na jednoduchý HTTP požadavek?
- kloban
- Člen | 123
Ahoj, snažím se rozchodit jednoduchý http požadavek.
Laděnka ale píše „Service of type Nette\Http\Request not found.“
Co mi v kódu níže chybí? Díky za rady.
<?php
namespace App\ZakaznikModule\Presenters;
use Nette,
Nette\Database\Table,
Nette\Http\Request,
Nette\DI\Container;
class QkodPresenter extends BasePresenter
{
/** @inject @var Nette\Database\Context */
public $database;
/**
* @param int
*/
public function renderDefault()
{
$container = new Container;
$httpRequest = $container->getByType('Nette\Http\Request');
$uri = $httpRequest->getUrl();
echo $uri; // např. https://doc.nette.org/cs/?action=edit
echo $uri->host; // nette.org
}
}
- Šaman
- Člen | 2666
To, co děláš, je nesmysl – vytvoříš si nový (prázdný) Container a v něm pak hledáš službu, která tam samozřejmě není. Kdybys ho chtěl z aplikačního kontejneru, měl bys použít DI, tedy nainjectovat si ho.
Ale v presenteru by měl být request už automaticky, zkus to přes
$this->request $this->httpRequest.
Editoval Šaman (22. 11. 2014 22:19)
- kloban
- Člen | 123
Před tím jsem postupoval podle https://doc.nette.org/cs/http/request, proto jsem tam cpal ten kontejner (a ten jsem ještě vůbec nestudoval). Pokud ho ale nepotřebuju, tak ho ani vytvářet nebudu. Mě jde jen o to, že potřebuju získat obsah GETu a RemoteAddress.
getMethod mi funguje ale getQuery už ne. Zahlásí Call to undefined
method Nette\Application\Request::getQuery().
Když jsem zkusil getRemoteAddress, tak taky nešlo.
$uri = $this->request;
print_r($uri->getMethod());
print_r($uri->getQuery());
- janpecha
- Backer | 75
$this->request vrací ApplicationRequest, jestli chceš HTTP request pak použij $this->getHttpRequest()
- kloban
- Člen | 123
Jo tak toto už funguje. Tak snad už nebude problém.
janpecha napsal(a):
$this->request vrací ApplicationRequest, jestli chceš HTTP request pak použij $this->getHttpRequest()