2010-11-18 3 views
0

Я использую cakephp и pippoacl плагин, и я просто не могу добавить новую роль. Что я могу изменить в плагин, чтобы сделать представить с помощью Ajax, что-то вроде этого, на мой взгляд (add.ctp):

<?php echo $ajax->submit(
     'submit', 
     array(
      'url' => array('controller' => 'roles', 'action' => 'add'), 
      'before' => 'beforeSubmitAdd();', 
      'complete' => 'completeSubmitAdd(request);' 
     ) 
    ); 
?> 

Когда add.ctp загружается в первый раз, я могу что-то от print_r контроллер. Но ajax submit выше выполняет только javascript на 'before' и 'complete'. Я проверяю firebug, ответ пуст.

На мой контроллер:

function add() {   
    print_r("start"); 
    if (!empty($this->data)) { 
     print_r("add new role");   

     // save new role 
    }  
} 

Я использую AJAX Submit для пользователя, и у меня нет никаких проблем при добавлении нового пользователя. Есть ли идея, где я должен проверить? Я сравнивал код пользователя и роли в течение недели, и я попросил друга посмотреть мой код тоже, но мы все еще не можем найти причину этого.

Заранее благодарен! : D

ответ

0

Я не очень хорошо знаком с помощником Ajax, но я не использую его так долго, что не могу вспомнить, что он делает :).

Обратно к проблеме. Вы проверили, правильно ли запрошен URL-адрес в адресе Ajax? Это должно работать просто, но возможно, что URL-адрес будет недействительным.

Вы используете компонент безопасности (даже просто добавляя его к переменной переменных var $) ?. Это может привести к пустым экранам, особенно если вы каким-то образом измените поля в форме. Попробуйте удалить его и посмотреть, работает ли он без него.

Наконец-то я бы сказал, как бы это сделать с помощью jQuery.

После код должен делать эту работу:

$(document).ready(function(){ 
    $('form').live('submit', function(){ //handles also dynamically loaded forms 
     var form = $(this).addClass('loading'); //indicate somehow that the form has been submitted 
     $('#content').load($(this).attr('action'), $(this).serialize(), function(){ 
      form.removeClass('loading'); 
     }); 
    }) 
}); 

Это будет обрабатывать все Отправляет в формах системы, но вы можете изменить конечно.

+0

Hi, Nik! URL-адрес уже правильный. Он должен перейти к действию добавления в контроллере ролей и после сохранения новой роли он должен загрузить другую страницу. Случается, что он переходит на другую страницу, не сохраняя ничего. Я попытался print_r и узнал, что он не выполнил добавление. Thx для вашего ответа! – Threl