checkBoxList

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
igsavenko
Сообщения: 21
Зарегистрирован: 2011.06.24, 15:42

checkBoxList

Сообщение igsavenko »

Как реализовать следующее:
$data Определяется в контролере:

Код: Выделить всё

$criteria = new CDbCriteria;
$criteria->condition = 'uid = 0 OR uid = :uid';
$criteria->params = array(':uid' => (int)Yii::app()->user->id);

$data = CHtml::listData(Group::model()->findAll($criteria),'id','group');
 
У меня есть диалоговое окно с checkBoxList:

Код: Выделить всё

<?php echo $form->checkBoxList($model,'gid',$data); ?> //представление
Отмечаю галочками нужные элементы отправляю форму, ура, все добавилось в БД. Далее:
Теперь снова открываем диалоговое окно с checkBoxList:
И вот вопрос... нужно чтобы те, элементы которые я отметил и добавил в БД были отмечены галочками.

Порыскав на форуме попробовал сделать вот так (НО НЕ ПОМОГЛО :():

Код: Выделить всё

$model  = new Friends;
$model->gid[1] = true;
 
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: checkBoxList

Сообщение samdark »

Вообще если в форме используется activeCheckboxList, то это должно происходить автоматически.
igsavenko
Сообщения: 21
Зарегистрирован: 2011.06.24, 15:42

Re: checkBoxList

Сообщение igsavenko »

Увы и ах :( Попробовал activeCheckBoxList :( таже ерунда.
Johnatan
Сообщения: 167
Зарегистрирован: 2010.10.27, 13:06
Откуда: Reino de España

Re: checkBoxList

Сообщение Johnatan »

Что такое

Код: Выделить всё

$model  = new Friends;
$model->gid[1] = true; 
Если у вас данные в БД хранятся уже, зачем вы новую модель создаёте для вставки в БД?

Как вы храните значения checkBoxList? в отдельно таблице через связь? Или в одном поле?
Конференция: [email protected]
systemiv
Сообщения: 360
Зарегистрирован: 2011.06.26, 22:55
Откуда: Липецк
Контактная информация:

Re: checkBoxList

Сообщение systemiv »

Вопрос ещё актуален=)
Используется activeCheckBoxList, но при загрузке формы галкой отмечается только первый чекбокс. Хотя в БД всё норм
maschingan
Сообщения: 75
Зарегистрирован: 2011.01.20, 23:52

Re: checkBoxList

Сообщение maschingan »

Правильно спрашивают. Если вы делаете обновление, то, наверное, в контроллере нужно делать что-то вроде

Код: Выделить всё

$model = Friends::model()->findByPk($pk);
Johnatan
Сообщения: 167
Зарегистрирован: 2010.10.27, 13:06
Откуда: Reino de España

Re: checkBoxList

Сообщение Johnatan »

systemiv писал(а):Вопрос ещё актуален=)
Не верю. На мои-то вопросы вы не ответили. Значит уже всё решили? Зачем обманываете?
Конференция: [email protected]
systemiv
Сообщения: 360
Зарегистрирован: 2011.06.26, 22:55
Откуда: Липецк
Контактная информация:

Re: checkBoxList

Сообщение systemiv »

Johnatan писал(а):
systemiv писал(а):Вопрос ещё актуален=)
Не верю. На мои-то вопросы вы не ответили. Значит уже всё решили? Зачем обманываете?
Я не автор топика. просто проблема почти та же.
Johnatan
Сообщения: 167
Зарегистрирован: 2010.10.27, 13:06
Откуда: Reino de España

Re: checkBoxList

Сообщение Johnatan »

systemiv писал(а):Я не автор топика. просто проблема почти та же.
И? Где код? Как храните данные? Или вы думаете activeCheckBoxList специально для вас работает по-особенному?
Конференция: [email protected]
systemiv
Сообщения: 360
Зарегистрирован: 2011.06.26, 22:55
Откуда: Липецк
Контактная информация:

Re: checkBoxList

Сообщение systemiv »

Слышь друг. Ты не особо дерзкий ли?
Johnatan
Сообщения: 167
Зарегистрирован: 2010.10.27, 13:06
Откуда: Reino de España

Re: checkBoxList

Сообщение Johnatan »

systemiv писал(а):Слышь друг. Ты не особо дерзкий ли?
Я даже отвечать на такое не буду. Сразу видно, зачем вы сюда пришли.
Конференция: [email protected]
systemiv
Сообщения: 360
Зарегистрирован: 2011.06.26, 22:55
Откуда: Липецк
Контактная информация:

Re: checkBoxList

Сообщение systemiv »

Сразу видно что Вы нормально общаться не умеете. Спросили бы Вы нормально, получили бы нормальный ответ, пусть даже этот ответ нужен мне, Вы не в праве разговаривать в таком тоне.
igsavenko
Сообщения: 21
Зарегистрирован: 2011.06.24, 15:42

Re: checkBoxList

Сообщение igsavenko »

Как интересно тут Тема развернулась пока меня не было. С интернетом проблемы были. Вот снова сел за checkBoxList, вопросик следующий, я разобрался как работать checkBoxList. Но у меня получается так что после добавления информации в БД, создаются сразу несколько моделей:

Код: Выделить всё

foreach ($_POST['GroupFriend']['gid'] as $key => $value) {
                        $modelGF = new GroupFriend();

                        $modelGF->gid = $value;
                        $modelGF->fid = $model->id;
                        if($modelGF->validate()) {
                            if($modelGF->insert()) {
                                $checkResult = true;
                            } else {
                                $checkResult = false;
                            }
                        } else {
                            $checkResult = false;
                        }
                    }
 
А вот так я обратно отдают модели:

Код: Выделить всё

        $criteria = new CDbCriteria;
        $criteria->condition = 'fuid = :fuid AND uid = :uid';
        $criteria->params = array(':uid' => (int)Yii::app()->user->id, ':fuid' => $id);


        $modelsFR = Friends::model()->findAll($criteria);
        $allFids = array();

        foreach ($modelsFR as $modelFR) {
           $allFids[] = $modelFR->id;
        }

        $all = implode(',',$allFids);

        $modelGroupFriend = GroupFriend::model()->findAll('fid IN (:fid)', array(':fid' => $all)); 
checkBoxList - ругается на меня, что я ему передаю несколько моделей. :(

Код: Выделить всё

 $modelGroupFriend = GroupFriend::model()->findAll('fid IN (:fid)', array(':fid' => $all)); 
Johnatan писал(а):Что такое

Код: Выделить всё

$model  = new Friends;
$model->gid[1] = true; 
Если у вас данные в БД хранятся уже, зачем вы новую модель создаёте для вставки в БД?

Как вы храните значения checkBoxList? в отдельно таблице через связь? Или в одном поле?
Johnatan, спасибо что проявили интерес. Данные хранятся в отдельной таблице.
tuschkan
Сообщения: 21
Зарегистрирован: 2011.07.13, 18:34

Re: checkBoxList

Сообщение tuschkan »

Чтобы отметились нужные чекбокси, нужно делать так:

<?php echo $form->checkBoxList($model,'itmsize',inShopSize::getSizeList(), array()); ?>

inShopSize::getSizeList() - возвращает id, которые были ранее отмечены и созранены для выбранного объекта.

public static function getSizeList() {
$model = self::model()->active()->findAll();
$data = array();
foreach ($model as $sizeItem) {
$data[$sizeItem->sizeID] = $sizeItem->sizeLiteral;
}

return $data;
}
tuschkan
Сообщения: 21
Зарегистрирован: 2011.07.13, 18:34

Re: checkBoxList

Сообщение tuschkan »

создаются сразу несколько моделей:


что вы собственно хотите сделать?
igsavenko
Сообщения: 21
Зарегистрирован: 2011.06.24, 15:42

Re: checkBoxList

Сообщение igsavenko »

tuschkan писал(а):
создаются сразу несколько моделей:


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

Код: Выделить всё

$data = CHtml::listData(Group::model()->findAll($criteria),'id','group'); 
<?php echo $form->checkboxList($modelGF,'gid',$data);?>
После того как я отметил все галочками, в цикле добавляются данные в другую таблицу, где сопоставляется друг и группа:

Код: Выделить всё

foreach ($_POST['GroupFriend']['gid'] as $key => $value) {
                        $modelGF = new GroupFriend();

                        $modelGF->gid = $value;
                        $modelGF->fid = $model->id;
                        if($modelGF->validate()) {
                            $modelGF->insert();
                         }
                    } 
В вот после этого мне нужно сделать обратное действие, опять нажать на ссылку и чтобы уже галочками были отмечены те группы в которые я его поместил.
whitehaker
Сообщения: 26
Зарегистрирован: 2011.07.07, 18:39

Re: checkBoxList

Сообщение whitehaker »

Люди, вот прочёл тему, а всё равно не понимаю что делать:
задача такая:
1)отобразить чек бокс лист с категориями
2)записать выбранные категории в массив
3)при редактировании загрузить из массива отмеченные категории

модель: $category
поле: name
а что писать в data - я хз
равно как, то как мне получить нужный массив в таком формате: array(1,3,5) - где 1,3,5 - номера отмеченных чекбуксов
помогите, пожалуйста)
whitehaker
Сообщения: 26
Зарегистрирован: 2011.07.07, 18:39

Re: checkBoxList

Сообщение whitehaker »

пытаюсь сделать так, как написано выше, получаю ошибку: Catalog does not have a method named "active". что очевидно, ведь такого метода нет. мне просто надо получить id выделенных позиций, дальше я сам разберусь
whitehaker
Сообщения: 26
Зарегистрирован: 2011.07.07, 18:39

Re: checkBoxList

Сообщение whitehaker »

Удалось отобразить checkboxlist, подсунул ему новую модель. но вот как получить отмеченные пункты, и как записать в него то, что уже есть в базе - хз(
люди, где вы?
whitehaker
Сообщения: 26
Зарегистрирован: 2011.07.07, 18:39

Re: checkBoxList

Сообщение whitehaker »

просто внятно объясните как он работает. что получает на вход, а что отдаёт. Почему то в руководстве таких очевидно нужных вещей нет.
Ответить