объясните про CMenu::Items

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
maxyer
Сообщения: 290
Зарегистрирован: 2012.01.10, 17:55
Откуда: отсюда

объясните про CMenu::Items

Сообщение maxyer »

Здравствуйте !
Задам вопрос, который кому-то покажется глупым.

Как работает следующий пункт меню, созданный Gii -

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

$this->menu=array(
        // другие пункты меню
    array('label'=>'Delete User', 'url'=>'#', 'linkOptions'=>array('submit'=>array('delete','id'=>$model->id),'confirm'=>'Are you sure you want to delete this item?')),
);
Что значит знак # в параметре url и как формируется параметр linkOptions ?
Что есть опция submit ?
Какой тип результирующего запроса - GET или POST ?
Какие еще опции существуют ?

Сам в мануалах не нашел ;(
Nafania
Сообщения: 1227
Зарегистрирован: 2011.01.31, 13:12

Re: объясните про CMenu::Items

Сообщение Nafania »

Там прямо комментарий есть в Cmenu с этим примером.
В данном случае получается сабмит на указанный адрес методом POST.
linkOptions это в данном случае $htmlOptions этого метода http://www.yiiframework.com/doc/api/1.1 ... ink-detail
Вот здесь http://www.yiiframework.com/doc/api/1.1 ... nge-detail можно посмотреть, что можно еще делать, кроме submit и confirm
Аватара пользователя
Df_
Сообщения: 20
Зарегистрирован: 2012.10.07, 20:31

Re: объясните про CMenu::Items

Сообщение Df_ »

Дабы не создавать лишнюю тему, попрошусь со своим вопросом сюда )

Подскажите, а в Yii есть механизм отображения подменю в том или ином виде (например вертикальное подменю в http://www.yiiframework.com/doc/api/ )? Или все делать через javascript?
ATI
Сообщения: 69
Зарегистрирован: 2009.09.27, 12:35

Re: объясните про CMenu::Items

Сообщение ATI »

http://www.yiiframework.com/doc/api/1.1/CMenu
А визуальные манипуляции, css + js
maxyer
Сообщения: 290
Зарегистрирован: 2012.01.10, 17:55
Откуда: отсюда

Re: объясните про CMenu::Items

Сообщение maxyer »

Nafania писал(а):Там прямо комментарий есть в Cmenu с этим примером.
Вполне возможно.
Я даже что-то видел с этим #.
Там было написано что-то про якорь.
Второй раз найти не получается ;)
В данном случае получается сабмит на указанный адрес методом POST.
linkOptions это в данном случае $htmlOptions этого метода http://www.yiiframework.com/doc/api/1.1 ... ink-detail
Вот здесь http://www.yiiframework.com/doc/api/1.1 ... nge-detail можно посмотреть, что можно еще делать, кроме submit и confirm
Н-да ...
В общем понятно, хотя это практически не приблизило меня к стоящей задаче.

Может быть поможете ?
Хочу сделать групповое удаление записей, отмеченных чекбоксами в CGridView.

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

$columns = array(
    'check-boxes'=>array(
        'id'=>'check-boxes',
        'class'=>'CCheckBoxColumn',
        'selectableRows'=>2,
    ),
    'name',
    array(
        'class'=>'CButtonColumn',
    ),
);

if(!Yii::app()->user->checkAccess('manageStudents'))
    unset($columns['check-boxes']);

$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'students-grid',
    'dataProvider'=>$students->grouplist(),
    'filter'=>$students,
    'columns'=>$columns,
)); 
По совету данному ранее, я прописываю у чекбоксов параметр id (см. выше), оборачиваю CGridView в ActiveForm

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

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'students-form',
    'enableAjaxValidation'=>false,
)); ?>

// здесь находится CGridView

<?php $this->endWidget(); ?>
В контроллере делаю примерно так

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

              if(isset($_POST['check-boxes'])) {
                    $items = $_POST['check-boxes'];
                    $model = Students::model();
                    $criteria = new CDbCriteria();
                    $criteria->addInCondition('id', $items);
                    if(!$model->deleteAll($criteria))
                        throw new CHttpException(400,'Invalid request. DataBase error.');            
                }
И в принципе это даже работает, если на форме есть

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

    <?php echo CHtml::submitButton('Удалить выбранных'); ?>
Но вот мне захотелось заменить submitButton на аналогичный пункт бокового меню

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

    $this->menu = array(
    array('label'=>'Удалить выбранных', 'url'=>'#', 'linkOptions'=>array('submit'=>array('students/deleteSelected'),'confirm'=>'Are you sure ?')),
Ну а дальше вы знаете (см. старт-топик) ;)
Nafania
Сообщения: 1227
Зарегистрирован: 2011.01.31, 13:12

Re: объясните про CMenu::Items

Сообщение Nafania »

Вот сюда посмотрите viewtopic.php?f=9&t=1287&hilit=%D0%B2%D ... 1%81%D0%B5
maxyer
Сообщения: 290
Зарегистрирован: 2012.01.10, 17:55
Откуда: отсюда

Re: объясните про CMenu::Items

Сообщение maxyer »

Nafania писал(а):Вот сюда посмотрите viewtopic.php?f=9&t=1287&hilit=%D0%B2%D ... 1%81%D0%B5
Спасибо, посмотрю.
Хотя, честно говоря, не хочется использовать нестандартные расширения.
Да и чисто внешне оно выглядит не так, как я того хочу.
Я имею ввиду кнопки под гридом.
Мой вариант с

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

$this->menu = array(
    array('label'=>'Удалить выбранных', 'url'=>'#', 'linkOptions'=>array('submit'=>array('students/deleteSelected'),'confirm'=>'Are you sure ?')),
 
точно не проканает ? :oops:
Nafania
Сообщения: 1227
Зарегистрирован: 2011.01.31, 13:12

Re: объясните про CMenu::Items

Сообщение Nafania »

Что значит - нестандартное? Там вполне себе решение.
Я вам дал ссылку на него, чтобы вы посмотрели, как еще можно сделать без использования activeform.
Ответить