Неожиданное поле в данных POST с множественным выбором fieldName - PullRequest
0 голосов
/ 15 января 2019

Что у меня есть

foreach ($statuses as $key=>$value) {
    echo $this->Form->control('Filter.statuses['.$key.']', array(
        'type' => 'checkbox',
        'value' => $key,
        'label' => $value,
    ));
}

Что я получаю

Неожиданное поле 'Filter.statuses [1' в данных POST

Неожиданное поле 'Filter.statuses [2' в данных POST

Неожиданное поле 'Filter.statuses [3' в данных POST ...

Что я пробовал

$this->Form->unlockField('Filter.statuses');
$this->Form->unlockField('Filter.statuses[]');

Если я удалю префикс Filter., ошибки исчезнут, и мне больше не нужен вызов unlockField().

Ссылки

1 Ответ

0 голосов
/ 15 января 2019

Вы не должны использовать скобки в имени поля, помощник по формам не поддерживает это.Если вам когда-либо понадобится нетрадиционное имя, которое не поддерживает помощник по форме, используйте параметр name, чтобы указать его, передавая имя совместимого поля первому аргументу метода control().

Используйтевесь синтаксис с точками:

echo $this->Form->control("Filter.statuses.$key", /* ... */);

Таким образом помощник формы сможет защитить поля и создать правильные значения атрибутов имени HTML, такие как Filter[statuses][1].

...