YiiBoster 2.1.1 + YiiHeart 1.2

Заметки.
1.Бутстрап верси 2.1.1
все ссылки здесь
подключать без алиаса так
config/main.php

'preload' => array('bootstrap','log'),
'theme' => 'heart',
 
'components' => array( 

'bootstrap'=>array(
            'class'=>'application.extensions.yiibooster.components.Bootstrap',           
            'fontAwesomeCss' =>true,
            'minify'=>true,
        ),
 
'themeManager' => array(
            'basePath' => 'protected/extensions',
        ), 
 'gii' => array(
            'class' => 'system.gii.GiiModule',
            'password' => 'root',
            // If removed, Gii defaults to localhost only. Edit carefully to taste.
            'ipFilters' => array('127.0.0.1', '::1'),
            'generatorPaths' => array('ext.heart.gii'),
        ), 
2. Первоначальный css нужно поправить

.
Решается это несколько своеобразно - нужно везде удалить

<div class="row">

</div>
 
Тогда login.php примет вид


<?php
/* @var $this SiteController */
/* @var $model LoginForm */
/* @var $form CActiveForm  */

$this->pageTitle = Yii::app()->name . ' - Login';
$this->breadcrumbs = array(
    'Login',
);
?>

<h1>Login</h1>
<p>Please fill out the following form with your login credentials:</p>

<div class="form">
    <?php
    $form = $this->beginWidget('CActiveForm', array(
        'id' => 'login-form',
        'enableClientValidation' => true,
        'clientOptions' => array(
            'validateOnSubmit' => true,
        ),
    ));
    ?>

    <p class="note">Fields with <span class="required">*</span> are required.</p>

    <?php echo $form->labelEx($model, 'username'); ?>
    <?php echo $form->textField($model, 'username'); ?>
    <?php echo $form->error($model, 'username'); ?>

    <?php echo $form->labelEx($model, 'password'); ?>
    <?php echo $form->passwordField($model, 'password'); ?>
    <?php echo $form->error($model, 'password'); ?>
    <p class="hint">
        Hint: You may login with <kbd>demo</kbd>/<kbd>demo</kbd> or <kbd>admin</kbd>/<kbd>admin</kbd>.
    </p>
    
    <?php echo $form->checkBox($model, 'rememberMe'); ?>
    <?php echo $form->label($model, 'rememberMe'); ?>
    <?php echo $form->error($model, 'rememberMe'); ?>
    
    <?php echo CHtml::submitButton('Login2'); ?>   

    <?php $this->endWidget(); ?>
</div><!-- form -->

 3.Для удобства - вот названия иконок
на данный момент версия  Font Awesome 4.0.3
но это легко исправляется.  Здесь можно скачать последнюю версию (на момент написания 4.3)
Добавление -  в папку protected\extensions\yiibooster\assets
заменяем  папку font-awesome скачанной
Изменить иконку легко - предположим в 
protected\extensions\heart\views\layouts
<?php

$currController = Yii::app()->controller->id;
$currControllers = explode('/', $currController);
$currAction = Yii::app()->controller->action->id;
$currRoute = Yii::app()->controller->getRoute();
$currRoutes = explode('/', $currRoute);

$menu = array(
    array('label' => 'Home', 'url' => array('/site/index'),
        'icon' => 'fa fa-home',
        'active' => ($currController == 'site' and $currAction == 'index' )),
    array(
        'label' => 'Admin',
        'url' => '#',
        'icon' => 'fa fa-gear',
        'visible' => !Yii::app()->user->isGuest,
        'active' => false,
        'items' => array(
            array('label' => 'Generator Code',
                'url' => array('/gii/heart'),
                'icon' => 'fa fa-refresh fa-fw',
                'visible' => !Yii::app()->user->isGuest),
            array('label' => 'Engine',
                'url' => array('/engine/admin'),
                'icon' => 'fa fa-wrench',),
        //'---',
        //array('label'=>'NAV HEADER'),
        )),
    array('label' => 'Pages',
        'url' => '#',
        'icon' => 'fa fa-sitemap',
        'active' => ($currController == 'site' and $currAction != 'index'),
        'items' => array(
            array('label' => 'About',
                'url' => array('/site/page', 'view' => 'about'),
                'icon' => 'fa fa-windows',
                'active' => ($currController == 'site' and $currAction == 'page' )),
            array('label' => 'Contact',
                'url' => array('/site/contact'),
                'icon' => 'fa fa-connectdevelop',
                'active' => ($currController == 'site' and $currAction == 'contact' )),
        //'---',
        //array('label'=>'NAV HEADER'),
        )),
);
?
YiiBoster v4 (без yiiHeart)

yiiHeart

Не знаю  с чем связано. Но возможно удаление не будет работать.
Тогда в контроллере вместо
public function actionDelete($id)
    {
        $this->loadModel($id)->delete();
..
пишите
   public function actionDelete($id)
    {
       $this->loadModel($id)->deleteByPk($id);
..


4. Выводим модальные окна
в index модели в разделе кнопок

array(
            'class' => 'bootstrap.widgets.TbButtonColumn',
            'template' => '{view}',
            'buttons' => array
                (
                'view' => array
                    (
                    //'url' => '$data->id."|".$data->parent_id',    
                    'url' => '$data->id',
                    'click' => 'function(){
                        data=$(this).attr("href").split("|")
                        $("#myModalHeader").html(data[0]);
                      $("#myModalBody").load("' . $this->createUrl('modalView') . '/"+data[0]+"");
                        $("#myModal").modal();
                        return false;
                    }',
                ),
            )
        ),
    ),
));
?>
 
 модальное окно там же
 
<?php 
$this->widget('bootstrap.widgets.TbButton', array(
 'buttonType'=>'submit', 'icon'=>'fa fa-print','label'=>'Export', 'type'=> 'primary'));
?>
<?php echo CHtml::endForm(); ?>
<?php $this->endWidget(); ?>
<?php
$this->beginWidget(
        'bootstrap.widgets.TbModal', array('id' => 'myModal')
);
?>

<div class="modal-header">
    <a class="close" data-dismiss="modal">&times;</a>
    <h4 id="myModalHeader">Modal header</h4>
</div>

<div class="modal-body" id="myModalBody">
    <p>One fine body...</p>

</div>

<div class="modal-footer">
    <?php
    $this->widget(
            'bootstrap.widgets.TbButton', array(
        'label' => 'Close',
        'url' => '#',
        'htmlOptions' => array('data-dismiss' => 'modal'),
            )
    );
    ?>
</div>
в контроллере


    public function actionModalView($id)
    {
        $this->renderPartial('view', array(
            'model' => $this->loadModel($id),
        ));
    }

вьюшку можете поправить по усмотрению

5. Расширяем поле ввода модели в круде
 
  • \protected\extensions\heart\gii\crud\views\index.php

 textField($model,'model',array('class'=>'span8')); ?>
 textField($model,'controller',array('class'=>'span8')); ?>

6.Страница на всю ширину экрана

  • ..\protected\extensions\heart\views\layouts\column2.php

<?php /* @var $this Controller */ ?>
<?php $this->beginContent('//layouts/main'); ?>
<div class="row-fluid">
    <div class="span2" >
        <div id="sidebar" >
            <?php
            $box = $this->beginWidget(
                    'bootstrap.widgets.TbBox', array(
                'title' => 'Действия',
                'headerIcon' => 'icon- fa fa-list-alt'
                    )
            );
            ?>
            <?php
            $this->widget(
                    'bootstrap.widgets.TbTabs', array(
                'type' => 'pills',
                'stacked' => true,
                'tabs' => $this->menu,
                    )
            );
            ?>
            <?php $this->endWidget(); ?>
        </div><!-- sidebar -->
    </div>
    <div class="span9" style="width:80%;">
        <div id="content">
            <?php echo $content; ?>
        </div><!-- content -->
    </div>

</div>
<?php $this->endContent(); ?>

7.Модифицированный CRUD
по адресу
..\protected\extensions\heart\gii\crud\templates

https://drive.google.com/open?id=0B8SBzylZ-emONUJvNkZRRERmWmc&authuser=0

получите следующее


Комментарии

Популярные сообщения из этого блога

Пишем логи на C# (.NET). Легкий способ.

Учебник yii2