set(string $var, mixed $value)
set() метод – это основной способ передачи данных из контроллера в отображение. После вызова функции set() указанная переменная будет доступна в отображении.
<?php
//Сначала вы передаете данные из контроллера:
$this->set('color', 'розовую');
//Затем, в отображении вы можете использовать данные:
?>
Вы выбрали <?php echo $color; ?> сахарную глазурь для кекса.
Функция set() также может принимать массив в качестве первого параметра. Часто это может быть быстрым способом для передачи большого количества информации в отображение.
Индексы массива будут преобразованы при передаче в отображение
('underscored_key' станет 'underscoredKey', и т.д.):
<?php
$data = array(
'color' => 'розовый',
'type' => 'сахар',
'base_price' => 23.95
);
//сделаем $color, $type, and $basePrice
//доступными в отображении:
$this->set($data);
?>
render(string $action, string $layout, string $file)
Функция render() автоматически вызывается в конце каждого запрошенного действия контроллера. Этот метод выполняет вывод отображения (используя данные, которые вы передали с помощью функции set()), размещает отображение внутри макета и выводит его для пользователя.
Файл отображения по умолчанию, используемый функцией render(), определен соглашением. Если запрошено действие search() контроллера RecipesController, то файл отображения в /app/views/recipes/search.ctp будет визуализирован.
class RecipesController extends AppController {
...
function search() {
// Рендерит отображение /views/recipes/search.ctp
$this->render();
}
...
}
CakePHP будет автоматически вызывать render после каждого действия (пока не установите $this->autoRender = false). Вы можете использовать это для назначения альтернативного файла отображения, присвоив в контроллере переменной $action нужное имя действия.
Если $action начинается с '/', значит предполагается файл отображения из каталога /app/views. Это позволяет напрямую рендерить элементы, что очень полезно при ajax вызовах.