Руководство по проектированию - новинка для CakePHP и MVC - PullRequest
0 голосов
/ 24 апреля 2011

Я новичок в CakePHP и MVC в целом.Я пытаюсь создать веб-приложение для своих друзей и семьи.

Я хотел бы, чтобы в верхней части страницы была форма входа в систему, а в теле - список событий.Я хотел бы, чтобы события отображались, даже если пользователь не вошел в систему. Когда пользователь входит в систему, используя форму вверху, я хотел бы обновить список событий, добавив дополнительную информацию, которая не будет отображаться для пользователя, который не вошел в систему.дюйма

Мне нужны аналогичные функции и на других страницах.

То, что я сделал до сих пор: 1) Создайте макет, содержащий мой верхний и нижний колонтитулы.2) Включите в макет пользовательский «Элемент», который является формой входа.

В идеале, если вы введете данные для входа в систему, элемент «Элемент» будет отправлять запрос ajax для проверки правильности имени входа.,Затем он обновится и скажет что-то вроде «Добро пожаловать».Я также хотел бы, чтобы он затем отправил другой ajax-запрос в метод обновления текущего контроллера, что бы это ни было.Текущий контроллер изменил бы то, что отображалось на странице, если бы что-нибудь зависело от входа в систему.

Это хороший дизайн?Возможно ли, какой CakePHP.Пока что при поиске кажется, что «элементы» должны быть самодостаточными, и вызывать их из функции «регулятора тока» кажется странным.

Любая помощь приветствуется.

Спасибовы.

1 Ответ

2 голосов
/ 24 апреля 2011

Да, ваш дизайн выполним.Ваши действия контроллера всегда отображают «представление».Нет, то, что вы вкладываете в это мнение, зависит от вас.Это может быть всего лишь элемент.

Вам потребуется, чтобы форма / кнопка входа в систему выполнила вызов действия входа в систему и чтобы он отображал возврат как json.Вы захотите обновить функцию входа в систему, чтобы обрабатывать ответы на ajax-запрос.Это может раздражать, так что я собираюсь предоставить некоторый код.

Обязательно включите компонент RequestHandler и Js helper в контроллер вашего приложения.

app / controllers / users_controller.php:

function login() {
    if($this->RequestHandler->isAjax()) {
        ...
        $this->set('status', /*whatever data you want to send*/);
        // Explicit call to render an ajax response, using a layout and view made specifically for ajax
        $this->layout = 'json';
        $this->render('ajax_login');    
    }
    // render views/users/login.ctp like normal
}

Ваше приложение / views / layouts / json.ctp file:

<?php
    header("Pragma: no-cache");
    header("Cache-Control: no-store, no-cache, max-age=0, must-revalidate");
    header('Content-Type: text/x-json');
    header("X-JSON: ".$content_for_layout);

    echo $content_for_layout;
?>

Ваше приложение / просмотры / пользователи/ajax_login.ctp file:

<?php echo $js->object($status); ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...