datový typ z metody GET – must be an instance of int, string given
- masterr
- Začátečník | 141
Zdravím,
beru id z url. (/admin/article/edit/2/)
90: public function actionEdit(\int $id)
91: {
92: $this->createComponentNewArticleForm($id);
93: dd($id);
94: }
vyhodí:
Argument 1 passed to AdminModule\ArticlePresenter::actionEdit() must be an
instance of int, string given
A opravdu je to string podle debugu, otázka z ní jak z toho mám udělat integer? Původně jsem myselel, že to public function actionEdit(\int $id) ověří datový typ a změní na zadaný v případě že je to možné. Ale ono to zřejmě jen kontroluje. Jak tohle řešíte?
- grongor
- Člen | 31
@masterr: PHP nemá typovou kontrolu. Jako type hint tedy nelze uvádět skalární typy. To co jsi ty napsal vlastně znamená, že parametrem má být třída int. A to jsi nechtěl. Další info najdeš zde.
Jak to řešit … buď neřešit (většinou je jedno, jestli je to int nebo
string) a nebo si to přetypovat $int = (int) $int;
. Pokud chceš
ověřit, že se opravdu jedná o inteeger, pak si musíš napsat ověřovací
funkci, např.
function isInt($param)
{
if (is_numeric($param) && intval($param) == $param)
return TRUE;
return FALSE;
}
a nebo můžeš pouít třídu s validátory přímo z Nette, kterou najdeš zde.