CListView не дает задать id (htmlOptions)

Предварительное обсуждение найденных ошибок перед отправкой их авторам фреймворка, а также внесение новых предложений.
Ответить
Denyii
Сообщения: 147
Зарегистрирован: 2012.02.13, 14:55

CListView не дает задать id (htmlOptions)

Сообщение Denyii »

В CBaseListView.php

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

    public function init()
    {
        ...
        $this->htmlOptions['id']=$this->getId();
        ...
    } 
А хотелось бы:

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

    public function init()
    {
        ...
        if(empty($this->htmlOptions['id'])) $this->htmlOptions['id']=$this->getId();
        ...
    } 
Аватара пользователя
Ryadnov
Сообщения: 456
Зарегистрирован: 2010.06.20, 00:38
Откуда: Санкт-Петербург

Re: CListView не дает задать id (htmlOptions)

Сообщение Ryadnov »

Задавайте ID самому виджету
Denyii
Сообщения: 147
Зарегистрирован: 2012.02.13, 14:55

Re: CListView не дает задать id (htmlOptions)

Сообщение Denyii »

Вы пробовали?
Это не поможет, задавать надо htmlOptions['id'].
И вместо

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

<?php $this->widget('zii.widgets.CListView', array(
    'dataProvider' => $dataProvider,
    'itemView' => '_view',
    'htmlOptions' => array('id' => 'MyID'),
)); ?>
надо использовать

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

<?php
    $listView = $this->createWidget('zii.widgets.CListView', array(
        'dataProvider' => $dataProvider,
        'itemView' => '_view',
    ));
    $listView->htmlOptions['id'] = 'MyID';
    $listView->run();
?>
Как по мне, это не в стиле Yii + не удобно + смущает дублирование функционала CBaseController::widget
Аватара пользователя
Ryadnov
Сообщения: 456
Зарегистрирован: 2010.06.20, 00:38
Откуда: Санкт-Петербург

Re: CListView не дает задать id (htmlOptions)

Сообщение Ryadnov »

я об этом

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

<?php $this->widget('zii.widgets.CListView', array(
'id' => 'MyID'
    'dataProvider' => $dataProvider,
    'itemView' => '_view',
)); ?>
Denyii
Сообщения: 147
Зарегистрирован: 2012.02.13, 14:55

Re: CListView не дает задать id (htmlOptions)

Сообщение Denyii »

О! Спасибо... кажись затупил))))
Denyii
Сообщения: 147
Зарегистрирован: 2012.02.13, 14:55

Re: CListView не дает задать id (htmlOptions)

Сообщение Denyii »

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

Виджеты не поддерживающие передачу id через htmlOptions:
framework/zii/widgets/grid/CGridView.php
framework/zii/widgets/CDetailView.php
framework/zii/widgets/CListView.php
framework/zii/widgets/CMenu.php
framework/zii/widgets/CPortlet.php
framework/web/widgets/CTabView.php

Виджеты поддерживающие передачу id через htmlOptions:
framework/zii/widgets/CBreadcrumbs.php
framework/zii/widgets/jui/CJuiAccordion.php
framework/zii/widgets/jui/CJuiAutoComplete.php
framework/zii/widgets/jui/CJuiButton.php
framework/zii/widgets/jui/CJuiDatePicker.php
framework/zii/widgets/jui/CJuiDialog.php
framework/zii/widgets/jui/CJuiDraggable.php
framework/zii/widgets/jui/CJuiDroppable.php
framework/zii/widgets/jui/CJuiProgressBar.php
framework/zii/widgets/jui/CJuiResizable.php
framework/zii/widgets/jui/CJuiSelectable.php
framework/zii/widgets/jui/CJuiSlider.php
framework/zii/widgets/jui/CJuiSortable.php
framework/zii/widgets/jui/CJuiTabs.php
framework/web/widgets/CActiveForm.php
framework/web/widgets/CAutoComplete.php
framework/web/widgets/CMaskedTextField.php
framework/web/widgets/CMultiFileUpload.php
framework/web/widgets/CStarRating.php
framework/web/widgets/CTreeView.php
framework/web/widgets/captcha/CCaptcha.php
framework/web/widgets/pagers/CLinkPager.php
framework/web/widgets/pagers/CListPager.php

Когда объект в Yii имеет htmlOptions, правильно брать id от туда.
Подождем что скажут разработчики.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: CListView не дает задать id (htmlOptions)

Сообщение samdark »

https://github.com/yiisoft/yii/issues, а ещё лучше сразу пулл.
Denyii
Сообщения: 147
Зарегистрирован: 2012.02.13, 14:55

Re: CListView не дает задать id (htmlOptions)

Сообщение Denyii »

https://github.com/umrs/yii/commit/2bb2 ... 69a325897c
Есть замечания по коммиту?
Можно пулл на русском? ))
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: CListView не дает задать id (htmlOptions)

Сообщение samdark »

Если на английском не выходит, можно.
Аватара пользователя
lancecoder
Сообщения: 2532
Зарегистрирован: 2012.06.26, 17:16

Re: CListView не дает задать id (htmlOptions)

Сообщение lancecoder »

да это не вариант, вы тем самым вводите путаницу в виджет, ибо он во многих местах (яваскрипт) обращается непосредственно через getId, а вы его получается не можете сменить, а только htmlOptions и получится у вас что id элемента не будет соответствовать id на которые повесит обработчики виджет. Может я не прав, но на вскидку ожидается такое поведение
Аватара пользователя
lancecoder
Сообщения: 2532
Зарегистрирован: 2012.06.26, 17:16

Re: CListView не дает задать id (htmlOptions)

Сообщение lancecoder »

if(empty($this->htmlOptions['id']))
$htmlOptions['id']=$this->htmlOptions['id']=$this->getId();
надо добавить нечто

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

$this->id = $htmlOptions['id'] 
тогда как то вот так надо и id сделать приватным, следовательно:

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

$this->_id = $htmlOptions['id'] 
следовательно переписывать все виджеты, короче мое имхо - делать нефиг подстраивай код под себя, Jui виджеты мне кажется уже обкатали себя и полет вроде нормальный
Denyii
Сообщения: 147
Зарегистрирован: 2012.02.13, 14:55

Re: CListView не дает задать id (htmlOptions)

Сообщение Denyii »

он во многих местах (яваскрипт) обращается непосредственно через getId
Код пожалуйста.
Аватара пользователя
lancecoder
Сообщения: 2532
Зарегистрирован: 2012.06.26, 17:16

Re: CListView не дает задать id (htmlOptions)

Сообщение lancecoder »

в бутстрап компонентах посмотрите - то что вы предлагаете обратно не совместимо имхо
Аватара пользователя
lancecoder
Сообщения: 2532
Зарегистрирован: 2012.06.26, 17:16

Re: CListView не дает задать id (htmlOptions)

Сообщение lancecoder »

а если уж вы и предлагаете, тогда и переопределяйте функцию
function getId(){
return $this->options['id']; //как то так или где оно хранится в классе
}
Denyii
Сообщения: 147
Зарегистрирован: 2012.02.13, 14:55

Re: CListView не дает задать id (htmlOptions)

Сообщение Denyii »

хм... Да если кто-то расширится от этих виджетов и будет использовать $this->id, а не $this->options['id'] может и не работать их код... Это смотря как написан виджет, как себя ведет, если ему передать id и options['id'] одновременно при создании.
Можно ссылку на бутстрап, о котором идет разговор.

offtop.
Давно хотел сказать... Классная ава... но тема не раскрыта ))))
И спасибо что потратили свое время на обсуждение коммита.
Denyii
Сообщения: 147
Зарегистрирован: 2012.02.13, 14:55

Re: CListView не дает задать id (htmlOptions)

Сообщение Denyii »

Не нашел у указанных Вами расширений проблем с моим коммитом.
Аватара пользователя
lancecoder
Сообщения: 2532
Зарегистрирован: 2012.06.26, 17:16

Re: CListView не дает задать id (htmlOptions)

Сообщение lancecoder »

это я когда ошибся, походу, помню ктото ссылки просил на это в другом посту получается :-D
Denyii
Сообщения: 147
Зарегистрирован: 2012.02.13, 14:55

Re: CListView не дает задать id (htmlOptions)

Сообщение Denyii »

Да, да )) я просил ссылки на бутстрап, что бы проверить не совместимость.
в бутстрап компонентах посмотрите - то что вы предлагаете обратно не совместимо имхо
и ее не нашел. О чем и отписал.
Ответить