Проблема с флажком на 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);
}

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

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

2

Решение

Я вижу несколько проблем с вашим кодом, и сохранение данных может быть упрощено, поэтому я приведу вам пример того, как я настроил 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();
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]