ArrayHash do Array pro kontrolu jedinečnosti
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Klobasa
- Člen | 16
Ahoj,
ve formuláři mám 5 selectboxů, do kterých se přidávají jména
z databáze a zároveň potřebuji, aby při výběru shodných jmén nešlo
jít dále (přes addError). Našel jsem na array metodu array_unique(), jenže
jsem zjistil, že formulář vrací arrayHash.
Potřebuji tedy:
- buď převést arrayHash na Array
- nebo zkontrolovat jedinečnost obsahu přímo v arrayHashi
Díky za rady :)
- JZechy
- Člen | 161
@Klobasa Když dáš metodě getValues() parametr true, dostaneš hodnoty jako obyčejné pole.
- Hug0
- Člen | 35
Ahoj,
jestli chápu správně tak máš něco jako:
<?php
public function createComponentTestForm(): Form
{
$form = new Form;
$names = [
'name1' => 'name1',
'name2' => 'name2',
'name3' => 'name3',
'name4' => 'name4',
'name5' => 'name5',
];
$form->addSelect('val1', 'names:', $names);
$form->addSelect('val2', 'names:', $names);
$form->addSelect('val3', 'names:', $names);
$form->addSelect('val4', 'names:', $names);
$form->addSelect('val5', 'names:', $names);
$form->addSubmit('submit', 'submit');
$form->onSuccess[] = function(Form $form, ArrayHash $values) {
};
return $form;
}
?>
Co potom pro kontrolu použít array_flip?
<?php
$form->onSuccess[] = function(Form $form, ArrayHash $values){
if (count(array_flip((array) $values)) !== $values->count())
{
$form->addError('Error...');
}
};
?>
Editoval Hug0 (21. 6. 2017 9:19)