Presenter argument type error
- glaseja1
- Člen | 2
Ahoj. Mam Presentery, ktere berou jako arguemnt page, a nekdy
i searchArgs
Validuji typ takto:
public function renderDefault($page, $searchArgs)
{
if(!is_int($page))
$page = 1;
if(!is_array($searchArgs))
$searchArgs= [];
...
}
To je ale dost problematicke delat v kazdem presenteru, a kdyz specifikuji typ
public function renderDefault(int $page = 1, array $searchArgs = [])
{
}
Tak to lze shodit tim, ze tam narvu spatny typ, tedy napr. pristupem na
url?page='abc'
Chci se zeptat, nevite, prosim, o nejakem elegantnim reseni, nez vsude davat manualni testy viz vyse? Jedine co mne napada, je dat manualni testy do base presenteru, ale pak by vsechny presentery musely mit stejny pocet argumentu, a stejne, pokud bych zapomel zavolat
parent::renderDefault(&$page)
tak uz to bude zase hazet chybu.
Dekuji moc
- Marek Bartoš
- Nette Blogger | 1274
Mám dojem, že pokud tam pošleš špatný typ, tak to skončí na BadRequestException, která se ti v produkčním módu (catchExceptions) nezaloguje.