MyTetra Share
Делитесь знаниями!
Ручное создание модели в Yii 1.x.x и ее использование в контроллере (пример)
Время создания: 24.09.2014 22:31
Автор: Xintrea
Текстовые метки: Yii, модель, контроллер, вид, база данных, вызов из контроллера, пример
Раздел: Компьютер - Программирование - Язык PHP - Yii
Запись: xintrea/mytetra_syncro/master/base/1411583465iufdciwn0t/text.html на raw.github.com

Все начинается с создания БД.

Например, создана база users с полями id, name, lastname.

Чтобы создать модель для этой базы данных, надо сделать следующее.

В каталоге /protected/models надо создать файл User.php, и задать ему такое содержание:

class User extends CActiveRecord

{

// Имя таблицы

public function tableName()

{

return 'users'; // Надо возвращать '{{users}}', если в настройках есть префикс у таблиц

}

// Стандартный (обязательный) метод с описанием полей таблицы

  public function attributeLabels()

{

    return array(

     'id' => 'id', // Первый параметр - произвольное имя, второй параметр - имя поля БД

     'name' => 'name',

     'lastname' => 'lastname',

    );

  }

// Стандартный метод, который необходим для функционирования модели в фреймверке Yii

// Возвращает экземляр объекта текущего класса модели

public static function model($className=__CLASS__)

{

return parent::model($className);

}

}

Получить данные из модели (в контроллере) можно, например, так:

// Класс контроллера User

class UserController extends Controller

{

// Эта переменная будет доступна при вызове вида (view)

// она должна быть публичной

    public $_name;

 

    // Действие по-умолчанию, оно будет вызвано при обращении к контроллеру

public function actionIndex()

{

// Получение записи с id=3 в виде объекта с полями - именами полей БД

      $data = User::model()->findByPk(3);

      

$this->_name = $data->name;

// Вызов отрисовки вида 'index'

      $this->render('index');

    }

}

Вид index создается так. Файл вида должен располагаться так:

/protected/views/user/index.php

То есть, в каталоге /protected/views создается каталог user, который называется так же как и контроллер (только с маленькой буквы). Контроллер User в первую очередь будет искать вид в каталоге /protected/views/user.

Содержимое файла /protected/views/user/index.php должно быть следующим:

Привет <?php echo $this->_name; ?>

Можно использовать и сокращенную запись (если позволяют настройки PHP):

Привет <?$this->_name; ?>

То есть, внутри скрипта представления экземпляр контроллера доступен через $this.

Кроме того, в контроллере мы можем использовать следующий способ для передачи данных представлению (второй параметр):

$this->render('edit', array(
    'var1'=>$value1,
    'var2'=>$value2,
));

Это и есть краткое описание механизма MVC в фреймверке Yii 1.x.x.

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования