Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PHP для продвинутых.docx
Скачиваний:
16
Добавлен:
01.07.2025
Размер:
12.54 Mб
Скачать

7.Подключение шаблонов

Для подключения шаблонов в YII имеется два метода: render и renderPartial. Первый параметр – это путь к файлу-шаблона, второй – массив переменных, третий – булево значение, если стоит true, шаблон сразу на экран не выводится, его можно загнать в переменную.

RenderPartial генерирует кусочек кода, без подключения основного шаблона layouts.

Передача подшаблона в шаблон. Листинг 7.1

public function actionIndex(){

$result = $this->renderPartial('v_result', '', true);

$this->render('v_main', ['r'=>$result]);

}

Подключим систему layouts.

В папке components откроем файл controller.php

Подключение шаблона в настройках контроллера. Листинг 7.2

class Controller extends CController

{

public $layout='//layouts/column1';

}

Это значит, что в папке veiws мы находим папку layouts и файл column1.php. Рассмотрим данный файл.

column1.php. Листинг 7.3

<?php /* @var $this Controller */ ?>

<?php $this->beginContent('//layouts/main'); ?>

<div id="content">

<?php echo $content; ?>

</div><!-- content -->

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

Данный файл, в свою очередь подключает основной шаблон main.php, в котором где-то в коде будет выводиться переменная $content.

Передача параметров из подшаблона render в основной layouts. Рассмотрим на примере формирования хлебных крошек.

Хлебные крошки, файл подшаблона. Листинг 7.4

$this->breadcrumbs=array(

'Contact',

);

Данный массив будет доступен в основном шаблоне layouts или в файлах, подключаемых к нему.

Вывод хлебных крошек в основном шаблоне. Листинг 7.5

<?php if(isset($this->breadcrumbs)):?>

<?php $this->widget('zii.widgets.CBreadcrumbs', array(

'links'=>$this->breadcrumbs,

)); ?><!-- breadcrumbs -->

<?php endif?>

Чтобы основной файл шаблона layout имел возможность перехватывать переменные из подшаблона, необходимо объявить эту переменную в контроллере, который вызвает данных layout.

Объявление переменных шаблона в контроллере. Листинг 7.6

public $breadcrumbs=array();

Здесь же можно задать значение по умолчанию для этой переменной.

8. Полезное.

Экшн по умолчанию – это экшн index. Но его можно переопределить с помощью свойства $defaultAction.

Объявление экшна по умолчанию. Листинг 8.1

Class MyController extends Controller{

public $defaultAction = ‘New’

public function actionNew(){

}

}

Собственные классы помещаем в папку protected/components.

Если класс содержит статичный метод, то вызваться он будет так: Имя_класса::метод(). Это значит, что файлы находящиеся в папке components, автоматически сканируются и подключаются к рабочему проекту.

BeforeSave – это метод переопределения перед сохранением.

Использования beforeSave() в методах. Листинг 8.2

public function beforeSave(){

$this->title = $this_title . ”___new”;

return parent::beforeSave();

}

Кроме beforeSave() можно использовать методы переопределения beforeDelete(), beforeFind() и т.д. Но надо обязательно возвращать родительскую функцию beforeSave().

Текущая модель – self::model().

setFlashиспользуется для формирования альтернативных значений. Рассмотрим пример использования.

Создание setFlash в экшне. Листинг 8.3

if($model->validate())

{

Yii::app()->user->setFlash('contact','Спасибо. Ваше сообщение отправлено.');

$this->refresh();

}

Перехват Flash-сообщений в шаблоне:

Создание setFlash в экшне. Листинг 8.4

<?php if(Yii::app()->user->hasFlash('contact')): ?>

<div class="flash-success">

<?php echo Yii::app()->user->getFlash('contact'); ?>

</div>

<?php endif; ?>

Вызов свойств из конфигурационного файла:

Вызов свойств из конфигурационного файла. Листинг 8.5

Yii::app()->db;

Скрыть index.php из адресной строки можно в файле main.php:

Вызов свойств из конфигурационного файла. Листинг 8.6

'urlManager'=>array(

'urlFormat'=>'path',

'showScriptName'=>false,

'rules'=>array(

'home' => 'base/index',

'page/<alias>'=>'base/page'

),

),

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]