Codeigniter и jQuery для динамических входов - PullRequest
1 голос
/ 05 июня 2011

Это мой первый вопрос, я был бы очень рад, если бы вы могли мне помочь.

Мне нужно поймать значения набора динамических входов, я генерирую входы с помощью jQuery. Я не знаю, будет ли хорошим решением использовать одно и то же имя для всех с квадратными скобками в конце, например:

<!-- first set of entries -->
<input type="text" name="nombre_contacto[]">
<input type="text" name="mail_contacto[]">

<!-- second set of entries -->
<input type="text" name="nombre_contacto[]">
<input type="text" name="mail_contacto[]">

<!-- etc... -->  

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

<!-- first set of entries -->
<input type="text" name="nombre_contacto1">
<input type="text" name="mail_contacto1">

<!-- second set of entries -->
<input type="text" name="nombre_contacto2">
<input type="text" name="mail_contacto2">

<!-- etc... -->  

Как я могу поймать каждый предмет на моем контроллере? это возможно?

Спасибо!

1 Ответ

0 голосов
/ 05 июня 2011

Лучше всего использовать массив, как вы это делали в первом примере.

Чтобы получить все результаты, что-то вроде этого будет работать:

$names = $this->input->post('nombre_contacto');
$emails = $this->input->post('mail_contacto');

Обе переменные теперь являются массивами, их значения соответствуют значениям, введенным пользователем, а ключи - в том порядке, в котором они появились в вашей форме.

Что-то вроде этого должно дать вам представление:

foreach ($names as $key => $value)
{
    $contact[$key] = $value;
}
foreach ($emails as $key => $value)
{
    $contact[$key] .= ' - '.$value;
}

Теперь у вас есть новый массив, значения которого выглядят так: John Smith - jon@smith.com

Это просто пример, я не знаю, что вы делаете со значениями.

Еще один пример: если по какой-то причине вам пришлось получить доступ к третьему опубликованному имени, вы можете использовать это:

echo $_POST['nombre_contacto'][2]; // Arrays have 0 based index, so this is #3

Это с вашими входными именами, содержащими brackets[]. Это, на мой взгляд, безусловно, лучший способ. Вам не нужно будет угадывать, сколько входных данных существует, потому что это будет массив.

Просто для пояснения: использование скобок в именах полей превращает входные данные в массив при попадании на сервер, что позволяет публиковать несколько значений с одинаковым именем поля. Без скобок это будет строковое значение и , технически другое поле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...