Kontrola http requestu GET,POST,DELETE

Tomas8698
Člen | 109
+
0
-

Zdravím, pracujem na aplikácii, kde si potrebujem skontrolovať aký request bol na danú podstránku vykonaný pomocou:

 if( $_GET){
 ...spraví niečo
}

(Aby ta kontrola bola v if-ku.

Chcem sa spýtať ci by ste mi poradili ako sa dostáť k Get, Post a Delete parametrom. Hľadal som na nete no zial som nenašiel. Za odpoveď ďakujem

Editoval Tomas8698 (3. 10. 2021 12:29)

Tomas8698
Člen | 109
+
0
-

Dakujem pekne :)

Tomas8698
Člen | 109
+
0
-

@PetrParolek ešte sa chcem spytat do use som dal use Nette\Http\Request; A v docs. sa pise ze je to potrebne pouzit pomocou DI staci zadat $httpRequest = $this->getHttpRequest() . No ale mne to tak nefunguje nieje potrebne tam dat constructor s @var? :

	/** @var HttpRequest */
	private $httpRequest;

public function __construct(HttpRequest $httpRequest)
	{
		$this->httpRequest = $httpRequest;
	}

Trochu som zmeteni za kazdu radu dakujem :)

Editoval Tomas8698 (3. 10. 2021 13:26)

Tomas8698
Člen | 109
+
0
-

Ospravedlnujem sa ale stale nerozumiem ako tam pouzit to $this->gettHttpRequest s DI. Lebo to $this vola funkciu getHttpRequest, ktora je v presenter.php ( ked som dal v phpStorm ctrl + click na funkciu)

** Moja chyba, uz som na to prisiel, staci pouzit $this->getHttpRequest alebo si ulozit do premenej $httRequest a pouzivat to **

Dakujem este raz

Editoval Tomas8698 (3. 10. 2021 16:02)

MajklNajt
Člen | 470
+
0
-

tam už si nemusíš vyťahovať ten request pomocou $this->getHttpRequest, keďže si si ho nainjectoval do $httpRequest, už tam iba zavoláš tú metódu na zistenie metódy:

/** @var HttpRequest */
private $httpRequest;

public function __construct(HttpRequest $httpRequest) {
	$this->httpRequest = $httpRequest;
}

public function tutoToTestujem() {
	if($this->httpRequest->isMethod("GET") {
		// bake me pizza
	}
	if($this->httpRequest->isMethod("POST") {
		// make me bj
	}
	...
}
Tomas8698
Člen | 109
+
0
-

Aha uz to chapem, tam uz staci len ten $httpRequest zavolat. Dakujem pekne @MajklNajt :)

m.brecher
Generous Backer | 717
+
0
-

V presenteru je nejpřímější cestou jak získat metodu GET/POST/DELETE toto:

$this->getRequest()->method;  // kde $this je $presenter ;)
Polki
Člen | 553
+
+1
-

@mbrecher

m.brecher napsal(a):

V presenteru je nejpřímější cestou jak získat metodu GET/POST/DELETE toto:

$this->getRequest()->method;  // kde $this je $presenter ;)

Mě se teda více osvědčilo nepoužívat ApplicationRequest, ale HttpRequest:

$this->getHttpRequest()->getMethod();  // kde $this je cokoliv, kde máš getter

Jde mi o to, že ApplicationRequest si nemůžeš předat přes DI a ve výchozím stavu ho máš přístupný jen v Presenteru a může jich být víc takže nemusí být data nutně přesná, ale HttpRequest je jen jeden a je registrovaný v DI, takže si ho můžeš nechat injectnout do jakékoliv služby.

Taky bych upozornil, že jsem se koukal na pár videí s Grudlem a ten ve více v nich říkal, že: ‚Když dáte lidem na výběr z několika možností, tak jsou nerozhodní a nakonec si vymyslí vlastní cestu.‘
Do určité míry s tím souhlasím do určité ne, každopádně jde mi o to, že to bylo spojeno s tím, že u properties máme 2 druhy přístupu a to třeba ‚$this->request->method‘ a ‚$this->getRequest()->getMethod()‘, přičemž jsou ty 2 způsoby identický. No a to je to jeho více způsobů. No a přikláněl se tam k tomu, že by se properties úplně zrušili a zůstali jen gettery. Nakonec to všude nechal z historických důvodů, ale doporučuje se používat gettery.
Nikdy nevíš, ve které nové verzi to začne být deprecated, nebo dokonce to zmizí :)

Editoval Polki (4. 10. 2021 16:17)

m.brecher
Generous Backer | 717
+
0
-

Polki napsal(a):

@mbrecher

m.brecher napsal(a):

V presenteru je nejpřímější cestou jak získat metodu GET/POST/DELETE toto:

$this->getRequest()->method;  // kde $this je $presenter ;)

Mě se teda více osvědčilo nepoužívat ApplicationRequest, ale HttpRequest:

$this->getHttpRequest()->getMethod();  // kde $this je cokoliv, kde máš getter

Jde mi o to, že ApplicationRequest si nemůžeš předat přes DI a ve výchozím stavu ho máš přístupný jen v Presenteru a může jich být víc takže nemusí být data nutně přesná, ale HttpRequest je jen jeden a je registrovaný v DI, takže si ho můžeš nechat injectnout do jakékoliv služby.

Taky bych upozornil, že jsem se koukal na pár videí s Grudlem a ten ve více v nich říkal, že: ‚Když dáte lidem na výběr z několika možností, tak jsou nerozhodní a nakonec si vymyslí vlastní cestu.‘
Do určité míry s tím souhlasím do určité ne, každopádně jde mi o to, že to bylo spojeno s tím, že u properties máme 2 druhy přístupu a to třeba ‚$this->request->method‘ a ‚$this->getRequest()->getMethod()‘, přičemž jsou ty 2 způsoby identický. No a to je to jeho více způsobů. No a přikláněl se tam k tomu, že by se properties úplně zrušili a zůstali jen gettery. Nakonec to všude nechal z historických důvodů, ale doporučuje se používat gettery.
Nikdy nevíš, ve které nové verzi to začne být deprecated, nebo dokonce to zmizí :)

Díky za fundovanou profesionální odpověď, ale Request jsem si testoval i jak dopadne, když se vyvolá ErrorPresenter a fungovalo to dobře. Ideální podle mne je se v návrhu aplikace úplně vyhnout nutnosti tyhle specialitky vůbec potřebovat.