2012-05-15 2 views
1

Я работал в CakePHP, и у меня возникла следующая проблема. У меня есть страница администратора (AdminsController) с 1 представлением и 1 методом, индекс. В индексном представлении содержатся жестко закодированные ссылки на другие контроллеры и представления. Я присвоил класс всем этим ссылкам для загрузки DIV поверх содержимого admin с содержимым представления в нем. С помощью этого скрипта:CakePHP ajax call load неправильный макет

$(".cmsPage").click(function() { 
    var url = $(this).attr("href"); 

    $.ajax({ 
     url: url, 
     success: function(data){ 
      $("#admin_wrapper", "#admin_close", "#admin_content").fadeIn('slow'); 
      $("#admin_content").html(data); 
     } 
    }); 
    return false; 
}); 

В настоящее время в одной из этих взглядов на страниц контроллера страницы/обзорных я сделал вызов Ajax к другому способу в том же контроллере, update_menu. Этот метод также имеет вид. Это то, что в настоящее время имеет в моем контроллере/методе.

public function update_menu(){ 
     $this->layout = ''; 
     foreach($this->request->data as $menu){ 
      //$this->layout = 'ajax'; 
      foreach($menu as $id => $submenu){ 
       $saveData = array('id' => $id, 'submenu' => $submenu); 
       $this->Page->save($saveData); 
       $this->render('update_menu','ajax'); 
      } 
     } 
    } 

Контроллер Администратор имеет Администратор макета так что делает обзор. Это то, что происходит, когда я пытаюсь получить данные из update_menu. (Внутри $ (документ) .ready (функция() {});)

$("#save_page").click(function(){ 
    toArray(); 
    return false; 
}); 

функция ToArray() (за пределами $ (документ) .ready (функция() {});)

function toArray() 
{ 
    var serialized = $('ol.sortable').nestedSortable('serialize'); 
    $.ajax({ 
    type: 'POST', 
    url: 'update_menu', 
    data: serialized, 
    success: function(data){ 
     $("#result").html('De pagina\'s zijn opgeslagen!'); 
    } 
    }); 
} 

То, что я получаю в консоли, - это весь рендер admins/index. вид & расположение.

Что мне нужно сделать, чтобы получить результат просмотра вместо admins/index.

Для информации, я бы использовал http://mjsarfatti.com/sandbox/nestedSortable/forum/categories/releases.

Поздравления, Вред.

+0

возможно дубликат [CakePHP 2.0 не использует мой макет Ajax] (http://stackoverflow.com/questions/6898439/cakephp-2-0-not-using-my-ajax-layout) – Dunhamzzz

ответ

0

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

$this->layout = null; 
+0

Tried не работает ... Я все еще получаю индекс администратора. – Hawiak

0

Установите макет в АЯКС макета:

$this->layout = "ajax"; 

или альтернативно, автоматизировать его, включив компонент RequestHandler в вашем AppController:

public $components = array(
    "RequestHandler" 
); 
+0

ли пытался оба и оба одновременно. Но результатом является то, что я получаю индекс администратора VIEW даже не в макете ... – Hawiak