{{tag>Yii2 Yii frameworks migrate}}

====== Миграция с Yii 1 Framework на Yii 2 Framework ======

====== Params app ======

с

<code php>
Yii::app()->params['name'];
</code>

на

<code php>
Yii::$app->params['name'];
</code>

====== Params / Get / Post ======

с

<code php>

</code>

на

<code php>
Yii::$app->request->get('name');
</code>

<code php>
Yii::$app->request->post('name');
</code>

====== Controllers ======

с

<code php>
class Module extends \yii\base\Module
{
    
    public $defaultController = 'camera';
}
</code>

на

<code php>
<?php

namespace app\modules\cabinet;

class Module extends \yii\base\Module
{
    public $controllerNamespace = 'app\modules\cabinet\controllers';
    
    public $defaultRoute = 'camera';
}  
</code>

===== Вызов контролера =====

с 

<code php>
$view = 'catalog/index';
Yii::app()->runController($view);
</code>

На

<code php>
$view = 'catalog/index';
Yii::$app->runAction($view)
</code>
===== Пути и переменные =====

с

<code php>
Yii::app()->request->baseUrl
</code>
  
на

<code php>
Yii::$app->homeUrl
</code>
===== Публикация скриптов =====

заменить с
<code php>
Yii::app()->clientScript->registerScriptFile(Yii::app()->request->baseUrl . "/template/js/login-v2.demo.min.js");
</code>

на

<code php>
$this->registerJsFile(Yii::$app->homeUrl . "/template/js/login-v2.demo.min.js");
</code>

===== Публикация CSS =====

заменить с
<code php>
Yii::app()->clientScript->registerCssFile();
</code>  

на

<code php>
$this->registerCssFile()
</code>
  
===== Формы =====

c 

<code php>
        <?php $form=$this->beginWidget('CActiveForm', array(
            'id'=>'registration-form',
            'enableClientValidation'=>true,
            'clientOptions'=>array(
                'validateOnSubmit'=>true,
            ),
        )); ?>
        <div class="form-group m-b-20">
            <?php echo $form->textField($model, 'login', array('class' => 'form-control input-lg', 'placeholder' => 'Email')); ?>
        </div>
        <div class="form-group m-b-20">
            <?php echo $form->passwordField($model, 'password', array('class' => 'form-control input-lg', 'placeholder' => 'Password')); ?>
        </div>
        <div class="login-buttons">
            <button type="submit" class="btn btn-success btn-block btn-lg">Зарегистрироваться</button>
        </div>
        <div class="m-t-20">
            Уже зарегистрированы? Нажмите <a href="<?=$this->createUrl('/site/registration');?>">сюда</a> для входа.
        </div>
        <?php $this->endWidget(); ?>
</code>

на

<code php>
<?php
/* @var $this SiteController */
/* @var $model LoginForm */

use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
use yii\helpers\Url;
use yii\web\View;

?>
    <div class="login-cover">
        <div class="login-cover-image"><img src="<?php echo Yii::$app->homeUrl; ?>images/cover.jpg" data-id="login-cover-image" alt="" /></div>
        <div class="login-cover-bg"></div>
    </div>
    <!-- begin login -->
    <div class="login login-v2" data-pageload-addclass="animated flipInX">
      
        <!-- end brand -->
        <div class="login-content">

            <?php $form = ActiveForm::begin(['id' => 'login-form']); ?>

                <div class="form-group m-b-20">
                <?= $form->field($model, 'username') ?>
                </div>

                <div class="form-group m-b-20">
                <?= $form->field($model, 'password')->passwordInput() ?>
                </div>

                <div class="m-t-20">
                    Еще не зарегистрировались? Кликните <a href="<?=Url::to('/site/registration');?>">сюда</a> для регистрации.
                </div>

                <div class="form-group login-buttons">
                    <?= Html::submitButton('Войти', ['class' => 'btn btn-success btn-block btn-lg', 'name' => 'login-button']) ?>
                </div>

            <?php ActiveForm::end(); ?>

        </div>
    </div>
    <!-- end login -->
<!-- end page container -->
</code>

===== Ссылки =====

c 

<code php>
$this->createUrl('/');
</code>
  
на

<code php>
use yii\helpers\Url;

Url::to(['/']);
</code>
  
===== View / Template =====

с 
<code php>
//layouts/main
</code>

на

<code php>
@app/views/layouts/main
</code>
  
==== CHtml::ajaxLink ====
  
с

<code php>
<?php 
echo CHtml::ajaxLink($images[$i]->f_fav?'<i class="fa fa-star"></i>':'<i class="fa fa-star-o"></i>',
  CController::createUrl('favorite'), 
  array(
    'type' => 'POST',
    'data'=>array('id'=>$images[$i]->id),
    'update' => '#favb_'.$images[$i]->id,
  ),
  array( 
    //htmlOptions
    "id"=>'favb_'.$images[$i]->id
  )
);
?>
</code>

на

<code php>
<?php 
echo Html::a($images[$i]->f_fav?'<i class="fa fa-star"></i>':'<i class="fa fa-star-o"></i>', '#', [ 	 
    'title' => Yii::t('yii', 'Close'),
    'onclick'=>"
     $.ajax({
      type: 'POST',
      cache: false,
      url: 'favorite',
      data: \{'id': {$images[$i]->id}\},
      success  : function(response) {
          $('#favb_{$images[$i]->id}).html(response);
      }
    });
    
    return false;",
]);
?>
</code>

===== Set Message / Set Flash =====
  
с 

<code php>
Yii::app()->user->setFlash();
</code>

на

<code php>
Yii::$app->session->setFlash('success', 'Message.'); 
echo Yii::$app->session->getFlash('success');
</code>

===== User =====

с

<code php>
Yii::app()->user->getId();
</code>

на

<code php>
Yii::$app->user->identity->getId();
</code>