2015-07-15 2 views
2

У меня есть поле выбора:yii2 получить ярлык OPTGROUP когда представить

<select id="issue-users_id" class="form-control" name="Issue[users_id]"> 
    <optgroup label="user"> 
    <option value="16">user</option> 
    <option value="24">robo</option> 
    </optgroup> 
    <optgroup label="group"> 
    <option value="15">123123</option> 
</optgroup> 
</select> 

когда представить форму Я хочу иметь массив так:

Issue[users_id][user] = value (16, 24) 
or Issue[users_id][group] = value (15) 

это означает, что я хочу, чтобы получить значение OPTGROUP

ответ

1

Все можно вручную подготовить данные и отправить их на сервер. На представить получить данные формы и заменить Issue.user_id параметров:

var selected = $('#issue-users_id').find(":selected"), 
    optgroup = selected.closest('optgroup'); 

if (optgroup.attr('label') == 'group') { 
    form_data.Issue.users_id = { 
    group: selected.val() 
    } 
} else { 
    form_data.Issue.users_id = { 
    user: selected.val() 
    } 
} 

$.ajax(/* send form */); 
+0

да. Я должен использовать jquery, но это немного отличается ваш путь :) – hoangk

0

Вы можете получить группу через идентификатор пользователя. Идентификатор пользователя является уникальным и может принадлежать к одной или нескольким группам, так что вы можете создать метод для этого в соответствии модели, например:

public function getGroup() 
{ 
    // return group name string here based on $this->id 
} 

Получение значения OPTGROUP из массива $_POST нелогично.

+0

спасибо за ответ .. но в моем случае, идентификатор пользователя и идентификатор группы, может быть то же самое :) так что мне нужно, чтобы получить ярлык OPTGROUP отличить – hoangk

+0

Да, но как это относится к этому? Идентификатора пользователя должно быть достаточно для получения групп, к которым он принадлежит, через отношения с базой данных. Извлечение его из '$ _POST' неверно. – arogachev

+0

Я имею в виду, что идентификатор пользователя уникален среди других пользователей. – arogachev

Смежные вопросы