Home PageКаталог Изменения НовыеКомментарии Пользователи Регистрация
CakePHP: Manual/Developing/Controllers/Methods ...
Это старая версия Manual/Developing/Controllers/Methods за 2009-02-08 13:27:31..

Методы контроллера



set

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

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 вызовах.


// Рендерит элемент в /views/elements/ajaxreturn.ctp
$this->render('/elements/ajaxreturn');


Вы так же можете определить другой файл отображения, используя третий параметр $file. Когда используете $file, не забывайте употреблять глобальные константы CakePHP (например, VIEWS).


Параметр $layout позволяет определить макет в который будет рендериться отображение.


redirect

redirect(string $url, integer $status, boolean $exit)

Метод, который вы будете использовать чаще всего – это redirect(). Эта функция берет первый параметр в виде родственного CakePHP URL.
Когда пользователь успешно выполнил заказ, вы возможно пожелаете перенаправить его в окно с информацией о получении продукции.


function placeOrder() {

    //Логика завершения заказа представлена здесь

    if($success) {
        $this->redirect(array('controller' => 'orders', 'action' => 'thanks'));
    } else {
        $this->redirect(array('controller' => 'orders', 'action' => 'confirm'));
    }
}


Второй параметр redirect() позволяет вам определить HTTP статус-код, сопровождающий перенаправление. Возможно, вы захотите использовать 301 (удален навсегда) или 303 (смотри другое), в зависимости от вида перенаправления.


Метод будет выполнять exit() после перенаправления, пока вы не передаете третьим параметром false.


flash

flash(string $message, string $url, integer $pause)

Подобно redirect(), функция flash() используется для направления пользователя на новую страницу после выполнения операции. Отличие flash() в том, что он показывает сообщение перед отправлением пользователя по другому URL.


Первый параметр должен содержать сообщение, которое требуется вывесли. Второй параметр – CakePHP-родственный URL. CakePHP выведет $message на $pause секунд перед перенаправлением пользователя.


Для внутристраничных flash-сообщений смотрите SessionComponent setFlash() функцию.



 
Комментарии
конечно это облегчает представление, но как работу над кодом замедляет( Блин не люблю ООП, рабские языки. Но надо учить, что делать.
ip-84-133.dnepro.net (2011-12-06 18:10:20)
OOP – нормальный стиль, просто некоторые разработчики чрезмерно увлекаются «самореализацией», вместо построения адекватной архитектуры и удобного интерфейса.
46.211.219.152 (2012-01-24 12:15:11)
Добавить комментарий:

Файлов нет. [Показать файлы/форму]