В моей форме кекса я имею следующий код
<p> <?php echo $form->input('option[]',array('size'=>13)); ?> </p> <p> <?php echo $form->input('option[]',array('size'=>13)); ?> </p> <p> <?php echo $form->input('option[]',array('size'=>13)); ?> </p> <p> <?php echo $form->input('option[]',array('size'=>13)); ?> </p>
Я пытаюсь получить значения из набора входных текстовых полей, количество текстовых полей может быть установлено пользователем, поэтому не может указывать отдельные имена каждого текстового поля, но как я могу получить значения от моего контроллера для вставки данных в db Таблица
спасибо
Вы можете оставить форму как есть (и использовать предложения от @Wizzard и @Lee), но лучше всего использовать инкрементную переменную для построения списка. то есть:
for($i=0;$i<$option_number;$i++){ echo $form->input("MyModel.{$i}.option"); }
Таким образом, ваша переменная после публикации формы будет выглядеть так:
data [MyModel] [0] [option] = 'значение' данные MyModel [опция] = 'данные' [MyModel] [2] [option] = 'значение' … и так далее …
В контроллере вы можете получить доступ к опубликованным данным:
print_r ($ this-> данные);
Взгляните saveAll () (найдите saveAll в своем браузере и найдите предлагаемую структуру данных)
ваши поля ввода называются одинаковыми: option[]
. Это хорошо. Это заставляет php автоматически превращать их в массив при загрузке запроса. Таким образом, вы можете получить их в своем контроллере CakePHP следующим образом:
$this->params['form']['option'][0] $this->params['form']['option'][1] ... and so on ...
Довольно уверены, что они находятся в массиве $ this-> params ['form'] в контроллере .. или $ this-> data
В методе вашего контроллера выполните var_dump ($ this); и вы увидите, где они появляются