Jump to content

Ajouter un champ dans le back office


Recommended Posts

Bonjour,

J'essaie de dupliquer le champ " Ajoutez une note privée" dans le back office. Pour avoir un champ "Réservation".
Mon problème est que les infos rentrées dans le champ créé ne sont pas enregistrées dans la base de données.

J'ai créé une variable "reservation" dans ma base de données, au niveau de la table ps_customer, avec des paramètres identiques à la variable "note".

J'ai ensuite modifié le fichier controllers/admin/AdminCustomersController.php en ajoutant :

// Add a Reservation
'customer_reservation' => Tools::htmlentitiesUTF8($customer->reservation),

Et

public function ajaxProcessUpdateCustomerReservation()
	{
		if ($this->tabAccess['edit'] === '1')
		{
			$reservation = Tools::htmlentitiesDecodeUTF8(Tools::getValue('reservation'));
			$customer = new Customer((int)Tools::getValue('id_customer'));
			if (!Validate::isLoadedObject($customer))
				die ('error:update');
			if (!empty($reservation) && !Validate::isCleanHtml($reservation))
				die ('error:validation');
			$customer->reservation = $reservation;
			if (!$customer->update())
				die ('error:update');
			die('ok');
		}
	}

J'ai aussi modifié le fichier js/admin.js en ajoutant :

function saveCustomerReservation(customerId){
	var reservationContent = $('#reservationContent').val();
	var data = 'token=' + token_admin_customers + '&tab=AdminCustomers&ajax=1&action=updateCustomerReservation&id_customer=' + customerId + '&reservation=' + encodeURIComponent(reservationContent);
	$.ajax({
		type: "POST",
		url: "index.php",
		data: data,
		async : true,
		success: function(r) {

			if (r == 'ok') {
				$('#submitCustomerReservation').attr('disabled', true);
			}
			showSuccessMessage(update_success_msg);
		}
	});
}

Et enfin, j'ai modifié le fichier view.tpl pour afficher le champ en back office en ajoutant :

<div class="panel">
				<div class="panel-heading">
					<i class="icon-file"></i> {l s='Add a Reservation'}
				</div>
				<form id="customer_reservation" class="form-horizontal" action="ajax.php" method="post" onsubmit="saveCustomerReservation({$customer->id|intval});return false;" >
					<div class="form-group">
						<div class="col-lg-12">
							<textarea name="reservation" id="reservationContent" onkeyup="$('#submitCustomerReservation').removeAttr('disabled');">{$customer_reservation}</textarea>
						</div>
					</div>
					<div class="row">
						<div class="col-lg-12">
							<button type="submit" id="submitCustomerReservation" class="btn btn-default pull-right" disabled="disabled">
								<i class="icon-save"></i>
								{l s='Save'}
							</button>
						</div>
					</div>
					<span id="note_feedback"></span>
				</form>
			</div>

Si quelqu'un a une idée, je suis preneur...
Merci

Link to comment
Share on other sites

Bonjour,

Merci pour ta réponse.

Alors, je ne suis pas expert, je fais les choses par déduction en recherchant dans le code. Donc, non, je n'ai pas surchargé la classe Customer. Tu fais ça comment et où ?

 C'est bon j'ai trouvé ! :-)

 

J'ai copié le fichier classes/Customer.php dans override/classes, et j'ai ajouté les infos sur la variable "reservation".

 

Merci beaucoup pour ton aide.

 

Par contre, j'aimerais me servir de cette variable sur la Page Produit. Mais, je ne sais pas comment "appeler" les infos relatives à Customer.

 

Edited by Florent (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...