Создайте выпадающий список из нескольких полей tinyint (1) в CakePHP - PullRequest
0 голосов
/ 12 мая 2011

В настоящее время я позволяю своим пользователям выбирать, как они хотят, чтобы их событие повторялось: ежедневно, ежемесячно, еженедельно или ежегодно.

В моей базе данных есть поля tinyint (1). Итак, они находятся на странице в виде флажков, и я использую JavaScript, чтобы ловить, когда пользователь нажимает один, и снимать флажок с остальных. Ничего страшного, и работает просто отлично.

TLDR: Я хотел бы иметь возможность иметь их в раскрывающемся списке. Есть ли способ конвертировать несколько полей tinyint (1) в один выпадающий список? Или мне просто нужно сделать это вручную (поле формы HTML, не связанное с полем базы данных), а затем преобразовать данные, когда они попадут в контроллер?

Ответы [ 3 ]

1 голос
/ 12 мая 2011

Вы можете создать «повторяющуюся» таблицу для периода повторения события.Таблица будет иметь идентификатор и поле имени.Затем в поле вашего события создайте поле repeatating_id.Теперь вы можете создать модель для своей повторяющейся таблицы и использовать стандартные соглашения CakePHP для заполнения формы, передавая результаты «списка» таблицы в ваше представление.

Чем больше я использую CakePHP, тем большеЯ считаю, что подходящие решения гораздо проще создавать и поддерживать.

1 голос
/ 12 мая 2011

В вашем контроллере:

$this->set('fields',Set::extract('/COLUMNS/Field', $this->Model->query("DESCRIBE {$this->Model->useTable}")));

На ваш взгляд:

$this->Form->input('yourdropdown', array('options' => $fields));
0 голосов
/ 12 мая 2011

Преобразовать это в одно поле ENUM?repeats enum('daily', 'monthly', 'weekly', 'yearly', 'none') или что-то в этом роде.

...