cakePHP: Как изменить идентификатор элемента формы (с помощью помощника формы)? - PullRequest
3 голосов
/ 02 марта 2011

Я создал форму, в которой есть цикл для отображения количества строк.У меня есть выбор в каждой строке, используя форму помощника.Все идентификаторы, которые он создает, одинаковы, есть ли способ добавить счетчик или некоторую определяющую информацию для идентификатора?

Я использую $this->Form->input('city_id') для вывода выбора городов из модели моего города,Все идентификаторы ModelCityId.Я хотел бы получить что-то вроде ModelCityId1, ModelCityId2, ModelCityId3 и т. Д. Возможно ли это?Или есть лучший способ отобразить опции в цикле?

Спасибо за любые ваши предложения.

Вот соответствующая часть кода.

while ($current_date != $departure_date) {
  $current_date = date("d-M-y", strtotime($current_date . " +1 day"));
  $output .= '<tr>';
  $output .= '<td>'.$current_date.'</td>';
  // irrelevant other columns
  $output .= '<td>'.$this->Form->input('city_id', array('label' => '', 'empty' => true)).'</td>';
  $output .= '</tr>';
}

Ответы [ 3 ]

3 голосов
/ 02 марта 2011

Как показывает зуд, просто используйте счетчик в цикле while, чтобы получить уникальный номер.

Тогда все, что вам нужно сделать, это присвоить его полю идентификатора

$this->Form->input('city_id', array('id' => 'somvalue' . $i));

Предполагая, что в вашем цикле определено $i.

1 голос
/ 02 марта 2011

Если идентификаторы одинаковы, имя также совпадает.Это испортит ваши данные, когда вы отправите их.Вы ищете этот синтаксис:

$this->Form->input("ModelName.$i.city_id", array(...))

Используйте ModelName, для которого вы создаете форму (т.е. то же самое, что и в $this->Form->create('ModelName')).

1 голос
/ 02 марта 2011

Редактировать: почему вы не можете сделать что-то вроде этого:

$counter = 0;
while ($current_date != $departure_date) {
  $current_date = date("d-M-y", strtotime(date("Y-m-d", strtotime($current_date)) . " +1 day"));
  $output .= '<tr>';
  $output .= '<td>'.$current_date.'</td>';
  // irrelevant other columns
  $output .= '<td>'.$this->Form->input('city_id' . $counter, array('label' => '', 'empty' => true)).'</td>';
  $output .= '</tr>';
  $counter++;
}
...