Jump to content

Controller de module :: Ajouter un champs non présent dans la table


Recommended Posts

Bonjour

je crée actuellement un module perso administrable en back.

j'ai créé le controller étendu de ModuleAdminController.

 

j'utilise la méthode renderForm() pour gérer le formulaire d'ajout/modification des éléments :

public function renderForm(){


 $this->fields_form = array(
		'legend' => array(
			'title' => $this->l('Element')
		),
  'submit' => array(
'title' => $this->l('Save'),
'class' => 'button'
  ),
		'input' => array(
array(
				'type' => 'text',
				'label' => $this->l('Nom'),
				'name' => 'name',
				'size' => 33,
				'required' => true,
				'desc' => $this->l("Nom de l'élément")
			),
			array(
				  'type' => 'radio',
				  'label' => $this->l('Type'),
				  'name' => 'type',
				  'size' => 33,
   'class' => 't',
   'required' => true,
				  'desc' => $this->l('Choix de la vente'),
   'values' => array(
  array('id'=>'elt_amount','label'=>$this->l('Quantité'),'value'=>'amount'),
  array('id'=>'elt_weight','label'=>$this->l('Poids'),'value'=>'weight')
   )
			),

array(
				'type' => 'text',
				'label' => $this->l('ID Produit'),
				'name' => 'ocp_id_product',
 'required' => true,
				'desc' => $this->l('Begin typing the first letters of the product name, then select the product from the drop-down list'),
			),

		 array(
		  'type' => 'select',
		  'label' => $this->l('ID Catégorie Elt'),
		  'name' => 'id_element_categ',
		  'options'=> array(
			 'query'=>CategoryCustomProduct::getCategoriesOCP(),
			 'id'=>'id_onet_customproduct_categorie',
			 'name'=>'name'
		   )
		 ),
array(
 'type' => 'radio',
 'label' => $this->l('Actif?'),
 'name' => 'active',
 'required' => false,
 'class' => 't',
 'is_bool' => true,
 'values' => array(
  array(
   'id' => 'active_on',
   'value' => 1,
   'label' => $this->l('Enabled')
  ),
  array(
   'id' => 'active_off',
   'value' => 0,
   'label' => $this->l('Disabled')
  )
 ),
 'desc' => $this->l('Enable Element in the Front Office')
),
		)
	);


 return parent::renderForm();
} 

 

je liste donc ci-dessus les champs présents dans ma table;

le champ "ocp_id_product" est utilisé pour afficher via un Jquery autocomplete la liste des produits du catalogue.

j'ai ajouté dans le script ci-dessous un champs caché pour récupérer l'ID du produit pour le renvoyer dans ma table ensuite.

 

$(window).load(function () {

/* function autocomplete */
$('#ocp_id_product').autocomplete('ajax_products_list.php', {
  minChars: 1,
  autoFill: true,
  max:20,
  matchContains: true,
  mustMatch:true,
  scroll:false
 }).result(function(event,data,formated){

  $("#ocp_id_product_result").remove();


  $("#ocp_id_product").after('<div id="ocp_id_product_result"><input type="hidden" id="ocp_id_product_val" name="ocp_id_product_val" value="'+data[1]+'" /><strong>'+data[0]+'</strong><span class="delOcpIdProduct" name="'+data[1]+'" style="cursor: pointer;"><img src="../img/admin/delete.gif"></span></div>');



 });
});

 

 

Et c'est là ou cela se complique !

j'ai essayé d'overrider la méthode beforeAdd pour intervertir les valeurs ocp_id_product_val => ocp_id_product, mais sans sans succès... et si je passe par la méthode processUpdate, le copyFromPost ne prends pas en compte mon champs caché supplémentaire...

 

Si quelqu'un a une idée comment faire ?

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...