form_checkbox () возвращает строку вместо массива в codeigniter - PullRequest
0 голосов
/ 14 июня 2011

Вот немного кода из codeigniter. Вид:

   <li>
      <label>Assign volunteer to event:</label><br />
      <? foreach ($all_vols as $vol) :?>
        <?=form_checkbox('volunteers', $vol) ?>
        <?=$vol['username']?>
        <br />
      <? endforeach ?>  
    </li>

Я ожидаю, что в переменной $_POST будет массив с именем volunteers.Вместо этого я получаю 'volunteers' => string('array').Есть мысли, что здесь происходит?

Ответы [ 3 ]

4 голосов
/ 14 июня 2011

Вы не можете использовать массив в качестве второго аргумента form_checkbox () при использовании таким образом, и $vol, вероятно, будет массивом, так как вы будете использовать $vol['username'] позже.Вы путаете помощника по форме, который принимает первый параметр, который будет использоваться в качестве атрибута «name», а второй - в качестве его «value».

3 голосов
/ 15 июня 2011

Из КИ Руководство пользователя

$data = array(
    'name'        => 'newsletter',
    'id'          => 'newsletter',
    'value'       => 'accept',
    'checked'     => TRUE,
    'style'       => 'margin:10px',
    );

echo form_checkbox($data);

// Would produce:

<input type="checkbox" name="newsletter" id="newsletter" value="accept" checked="checked" style="margin:10px" />

Ваш массив должен содержать данные, необходимые для заполнения флажка. Поэтому вы можете изменить свой флажок на <?=form_checkbox($vol) ?>, если вы уверены, что он содержит то, что необходимо для заполнения поля.

1 голос
/ 14 июня 2011

В документах на http://codeigniter.com/user_guide/helpers/form_helper.html предлагается использовать строку в качестве первого аргумента (в вашем случае "волонтеры") создаст <input type="checkbox" /> с таким именем при использовании $vol для пар атрибут-значение внутритег ввода.Это то, что вы хотите?Если это так, то, очевидно, вы получите атрибут «username».

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