Jak na jednoduchý HTTP požadavek?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
kloban
Člen | 123
+
0
-

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
+
+1
-

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
+
0
-

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());
Mysteria
Člen | 797
+
-1
-

$this->request->remoteAddress nefunguje?

janpecha
Backer | 75
+
+2
-

$this->request vrací ApplicationRequest, jestli chceš HTTP request pak použij $this->getHttpRequest()

kloban
Člen | 123
+
0
-

$this->request->remoteAddress nefunguje. Ale $this->request->getMethod funguje.

kloban
Člen | 123
+
0
-

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()