Аякс Меню в CakePHP - PullRequest
       1

Аякс Меню в CakePHP

0 голосов
/ 07 мая 2018

Я изучаю CakePHP, и мне нужно создать меню AJAX (меню, которое не перезагружает страницу, когда вы нажимаете на ссылки).

Я мог бы легко сделать это с помощью JavaScript, например:

function loadPage(page) {
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            document.getElementById("container").innerHTML = xhttp.responseText;
        }
    };

    xhttp.open("GET", page, true);
    xhttp.send();
}

, а затем вызывайте ее для каждой кнопки в меню и на соответствующей странице, указав только HTML-код, который будет помещен в идентификатор «контейнера» div'd:

window.onload = function() {
    document.getElementById("homeButton").onclick = function() { loadPage("home.html"); }
    document.getElementById("newsButton").onclick = function() { loadPage("news.html"); }
    document.getElementById("aboutButton").onclick = function() { loadPage("about.html"); }
    document.getElementById("registerButton").onclick = function() { loadPage("contact.html"); }
}

Ну, теперь, так как я не очень знаком с фреймворком CakePHP и с тем, как он работает с HTTP-запросами, у меня возникли некоторые проблемы.

Как бы вы сделали это в CakePHP?

Я ценю помощь, добрый день.

1 Ответ

0 голосов
/ 07 мая 2018

Краткий ответ: ajax макет твой друг!

Да, вы можете сделать это с CakePHP. (Вы не упомянули, какой CakePHP вы используете, поэтому я буду считать, что 2.x)

CakePHP использует концепцию layouts для рендеринга HTML вокруг страницы, например, объявления doctype, меню навигации и других вещей, общих для всех HTML-страниц вашего приложения.

При выполнении вызовов AJAX вы хотите получить только содержимое страницы без этого окружающего макета. Для этого вам нужно использовать пустой макет или макет по умолчанию ajax.ctp, который CakePHP предоставляет для вас.

Это соответствующая документация из CakePHP 2.x о макетах , в которой также немного говорится о ajax макетах.

Короче говоря, в вашем контроллере вам нужно установить макет на ajax для страниц, которые вы хотите визуализировать через ajax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...