Kontrola http requestu GET,POST,DELETE
- Tomas8698
- Člen | 109
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
@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
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 | 471
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
}
...
}
- Polki
- Člen | 553
@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 | 758
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.