2015-04-30 4 views
2

У меня проблема с флажком: он не обновляется в базе данных.Проблема с флажком на zend framework 1

$emailnotification = new Zend_Form_Element_Checkbox('emailnotification ', 'emailnotification', array(
    'checkedValue' => 1, 
    'uncheckedValue' => 0, 
)); 
$emailnotification->setLabel('emailnotification'); 
$emailnotification->setValue(1); 
$this->addElement($emailnotification); 

и на контроллере у меня есть обновление действий следующий код ниже для обновления:

if($this->_request->isPost()) 
{ 
    $formData = $this->getRequest()->getPost(); 
    if($form->isValid($formData)) 
    { 
     $contact = new Admin_Model_DbTable_Contact(); 
     $data = array(); 
     $data['idContact']   = $idContact; 
     $data['firstname']   = $form->getValue('firstname'); 
     $data['lastname']    = $form->getValue('lastname'); 
     $data['emailnotification'] = $form->getValue('emailnotification'); 
     if($contact->editContact($data)) 
     { 
      echo json_encode(array(
       "response" => true, 
       "message" => "Contact " . $data['firstname'] . " " . $data['lastname'] . "a été modifié" 
      )); 
      exit(); 
     } else { 
      echo json_encode(array(
       "response"  => false, 
       "errorMessage" => "Il y a eu une erreur dans l'edition de Contact." 
      )); 
      exit(); 
     } 
    } 
} 

функция editcontact:

public function editContact(array $data) { if(!empty($data)) { if($this->update($data, array('idContact = ?' => $data['idContact'])) > 0) { return true; } return false; } return false; } 

на .phtml

$('#editContact').submit(function(event) 
{ 
    var formId = $(this).attr('id'); 
    // Stop full page load 
    event.preventDefault(); 

    //Request 
    var data = { 
     // contact's properties 
     firstname    :  $("#firstname").val(), 
     lastname    :  $("#lastname").val(), 
     emailnotification  :  $("#emailnotification").val(), 
     batnotification   :  $("#batnotification").val() 

    }; 

    // Send 
    $.ajax({ 
     url: $('#'+formId).attr('action'), 
     dataType: 'json', 
     type: 'POST', 
     data: data, 
     success: function(data, textStatus, XMLHttpRequest) 
     {      
      if (data.response == true) 
      { 
       alert(data.message); 
       //upContent('userManagement/index/',''); 



      } 
      else 
      { 
       alert(data.message); 
      } 

и не всегда работал на меня сообщение Неопределенное и не обновлять в базе данных

Заранее спасибо

+0

Можете ли вы показать нам код в контроллере? И вся форма? И где скрипт, который сохраняет значение из формы в базу данных? –

+0

$ data ['emailnotification'] \t = $ form-> getValue ('emailnotification'); – user3791255

+0

Вы можете в моем коде заранее заблаговременно – user3791255

ответ

0

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

// Admin_Model_DbTable_Contact 
public function editContact(array $data) 
{ 
    Zend_Registry::get('db')->update(
     'contact_table', 
     $data, 
     'contact_id = ' . intval($data['idContact'] 
    ); 
    return Zend_Registry::get('db')->lastInsertId(); 
} 

Вы также можете оптимизировать код контроллера немного:

// In controller action 
if($this->_request->isPost() && $form->isValid($formData)) 
{ 
    $contact = new Admin_Model_DbTable_Contact(); 
    if($contact->editContact($form->getValues() + array('idContact' => $idContact))) { 
    { 
     echo json_encode(array(
      "response" => true, 
      "message" => "Contact {$form->getValue('firstname')} {$form->getValue('lastname')} a été modifié" 
     )); 
    } else { 
     echo json_encode(array(
      "response"  => false, 
      "errorMessage" => "Il y a eu une erreur dans l'edition de Contact." 
     )); 
    } 
    exit(); 
} 
Смежные вопросы