Ответы пользователя по тегу Yii
  • Как настроить тестирование в yii2 advanced codeception?

    alexanderbulatov
    @alexanderbulatov
    Fullstack разработчик
    Покажите, пожалуйста, вывод в консоли, если просто вызвать codecept без каких либо параметров и команд и из корня проекта.
    Ответ написан
    Комментировать
  • Вывод многоуровневого меню из базы данных в Yii2?

    alexanderbulatov
    @alexanderbulatov Автор вопроса
    Fullstack разработчик
    Решил сделать просто и традиционно. Вот таким образом (может быть кому пригодиться):

    Во view
    if ( Choice_Menu::viewMenuItemsTop('top-menu') ) {
            echo Nav::widget([
                'options' => ['class' => 'navbar-nav'],
                'items' => Choice_Menu::viewMenuItemsTop('top-menu'),
            ]);
        }


    Весь классе Choice_Menu и его методы оформлены так
    namespace app\modules\manager\models;
    
    use app\modules\manager\models\MenuModel;
    use app\modules\manager\models\MenuItemsModel;
    
    /**
     * Description of Choice_Menu
     *
     * @author Максимус
     */
    class Choice_Menu 
    {
        /**
         * @inheritdoc
         */
        private static function getMenuItemsTop($nameMenu)
        {
            $items = [];
            
            $code = $nameMenu;
            
            $query_menu = MenuModel::find()
                            ->andWhere(['code' => $code, 'status' => 1])
                            ->one();
            
            $query = MenuItemsModel::find()
                        ->andWhere([
                            'menu_id' => $query_menu->id,
                            'status' => 1
                         ])
                        ->all();
            
            foreach ($query as $item)
            {
                if ( empty($items[$item->parent_id]) )
                {
                    $items[$items->parent_id] = [];
                }
                
                $items[$item->parent_id][] = $item->attributes;
            }
            
            return $items;
        }
        
        /*
         * @inheritdoc
         */
        public static function viewMenuItemsTop($nameMenu, $parentId = 0)
        {        
            $array = self::getMenuItemsTop($nameMenu);
            
            if ( empty($array[$parentId]) ) { return; }
            
            for ( $i = 0; $i < count($array[$parentId]); $i++ )
            {
                $result[] = [
                    'label' => $array[$parentId][$i]['name'],
                    'url' => [$array[$parentId][$i]['url_item'].'/index'],
                    'items' => self::viewMenuItemsTop($array[$parentId][$i]['id'], $nameMenu)
                ];
            }
            
            return $result;
        }
    }
    Ответ написан
    Комментировать
  • Как в Yii2 в ckeditor от 2amigos добавить плагин?

    alexanderbulatov
    @alexanderbulatov
    Fullstack разработчик
    Если кому интересно будет, можно это решить АБСТОЛЮТНО более простым способ))))

    Всё как на официальном сайте по CKEditor.

    Закидываете в папку vendor/ckeditor/ckeditor/plugins свой плагин.

    А затем подключаете основной файл плагина там, где вам нужно, например вот так:
    $this->registerJs("CKEDITOR.plugins.addExternal('pbckcode', 'plugins/pbckcode/plugin.js', '');", $this::POS_READY, 'tinymcepluginpbckcode');


    А в самом уже отображении вот так:
    <?= $form->field($model, 'content')->widget(CKEditor::className(), [
                'preset' => 'custom',
                'options' => ['rows' => 15],
                'clientOptions' => [
                    'extraPlugins' => 'pbckcode',
                    'toolbarGroups' => [
                        ['name' => 'undo'],
                        ['name' => 'basicstyles', 'groups' => ['basicstyles', 'cleanup']],
                        ['name' => 'colors'],
                        ['name' => 'links', 'groups' => ['links', 'insert']],
                        ['name' => 'others', 'groups' => ['others', 'about']],
    
                        //['name' => 'youtube'], // <--- OUR NEW PLUGIN YAY!
                        ['name' => 'pbckcode']
                    ]
                ],
        ]) ?>


    А после обновляете страницу с этим редактором - будет ошибка (в консоли). В консоли смотрите папку, в которой закэширован CKEditor (будет показана при наведении на файл, который система не может найти). Находите её в директории @webroot и удаляете полностью эту злосчастную папку. А затем обновляете страницу с редактором Ctrl+F5 и наблюдаете добавленный свой плагин.

    Радуемся)))

    Между прочим именно так сам этот "2amigos" даёт инструкцию на github, но забыл, что всё там блин кэшируется.
    Ответ написан
    Комментировать
  • Как добавить иконки font-awesome в пункты меню сайта на yii2?

    alexanderbulatov
    @alexanderbulatov
    Fullstack разработчик
    Вот решение без плагинов, а уже родным решением Yii2:

    stackoverflow.com/questions/25832160/yii2-how-can-...

    А если в меню нужно вставить, то немного нужно изменить и сделать вот так в переменной $menuItems:

    ['label' => '', 'url' => ['/site/index'], 'linkOptions' => ['class' => 'fa fa-home']]
    Ответ написан