странная проблема макета cakePHP (ajax) - PullRequest
1 голос
/ 28 февраля 2012

У меня есть этот код:

// controller  
function contact($token) {
  $this->layout = 'ajax';
}

// contact element
<some html, no php>

// contact view html + javascript
<script type=".....">
....
$.post(
    $(this).attr("href"),
    null,
    function(data){
              $(data).appendTo($(".contact_store_link").parent()).fadeIn();
            }
    );
</script>

<!-- the relevant html -->
<dd><a class="contact_store_link" href="/stores/contact">link title</a></dd>

Проблема в том, что независимо от директивы $this->layout = 'ajax'; возвращаемая компоновка является компоновкой по умолчанию, установленной в функции appController.beforeFilter().

Дело в том, что кроме макета остальная часть кода работает просто отлично. правильный контроллер + действие + переданные аргументы. элемент и представление также работают нормально, и возвращенные данные содержат обработанные данные, только в неправильной компоновке.

очистка папки tmp не помогла. Я также проверил, что макет ajax такой, каким он должен быть (и работает в другом файле controller.action + view).

Ответы [ 3 ]

3 голосов
/ 28 февраля 2012

Вы можете попробовать:


function contact($token) {
  $this->layout = 'ajax';
  $this->render("ajax_view_name", FALSE);
}

Надеюсь, это поможет

0 голосов
/ 13 сентября 2012

Что насчет $this->autoLayout = false;, то отрендерите макет, который вы хотите.

CakePHP определяет autoLayout = true по умолчанию в файле lib\View\View.php. Надеюсь, это поможет.

0 голосов
/ 28 февраля 2012

Вы пробовали установить $this->layout = null; в действии, которое вызывается в запросе ajax?

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