Styls Posted December 1, 2012 Share Posted December 1, 2012 (edited) Bonjour, J'ai tenté de surcharger la méthode renderForm de la classe AdminCategoriesControllerCore, mais le fait qu'elle retourne en résultat "parent::renderForm();" annule toutes mes modifications car cela veut dire qu'on reexecute la méthode qu'on voulait justement surcharger... Donc quoique je fasse dans ma nouvelle methode renderForm de ma classe AdminCategoriesController cela ne sera pas pris en compte Quelqu'un a déjà eu ce souci ? Merci pour votre aide, Styls Edited December 1, 2012 by Styls (see edit history) Link to comment Share on other sites More sharing options...
Ninja Of Web Posted December 1, 2012 Share Posted December 1, 2012 Bonjour ! C'est un cas spécifique, si tu peut ne pas utilisé la surcharge ettu doit donc setter tous tes paramètres dans la méthode renderForm() du fichier surchargé. Voici un exemple qui j'espère te mettra sur une piste : /** * AdminController::renderForm() override * @see AdminController::renderForm() */ public function initFormFeatureValue() { $this->setTypeValue(); $this->fields_form[0]['form'] = array( 'legend' => array( 'title' => $this->l('Feature value'), 'image' => '../img/t/AdminFeatures.gif' ), 'input' => array( array( 'type' => 'text', 'label' => $this->l('Value:'), 'name' => 'value', 'lang' => true, 'size' => 33, 'hint' => $this->l('Invalid characters:').' <>;=#{}', 'required' => true ), array( 'type' => 'select', 'label' => $this->l('Feature:'), 'name' => 'id_feature', 'options' => array( 'query' => Feature::getFeatures($this->context->language->id), 'id' => 'id_feature', 'name' => 'name' ), 'required' => true ) ), 'submit' => array( 'title' => $this->l(' Save '), 'class' => 'button' ) ); // Create Object FeatureValue $feature_value = new FeatureValue(Tools::getValue('id_feature_value')); $this->tpl_vars = array( 'feature_value' => $feature_value, ); $this->getlanguages(); $helper = new HelperForm(); $helper->currentIndex = self::$currentIndex; $helper->token = $this->token; $helper->table = $this->table; $helper->identifier = $this->identifier; $helper->override_folder = 'feature_value/'; $helper->id = $feature_value->id; $helper->toolbar_scroll = false; $helper->tpl_vars = $this->tpl_vars; $helper->languages = $this->_languages; $helper->default_form_language = $this->default_form_language; $helper->allow_employee_form_lang = $this->allow_employee_form_lang; $helper->fields_value = $this->getFieldsValue($feature_value); $helper->toolbar_btn = $this->toolbar_btn; $helper->title = $this->l('Add a new feature value'); $this->content .= $helper->generateForm($this->fields_form); } Ce code est tirée du fichier : controller/admin/AdminFeatureController.php Cordialement, Loic. Link to comment Share on other sites More sharing options...
Styls Posted December 1, 2012 Author Share Posted December 1, 2012 Ca marche parfaitement, je n'y avais pas pensé, merci beaucoup ninja ! Link to comment Share on other sites More sharing options...
Ninja Of Web Posted December 1, 2012 Share Posted December 1, 2012 Content de t'avoir aider tu peut mettre le topic en résolu ? Link to comment Share on other sites More sharing options...
Styls Posted December 1, 2012 Author Share Posted December 1, 2012 Done Link to comment Share on other sites More sharing options...
jd440 Posted December 13, 2012 Share Posted December 13, 2012 Désole pour le déterrage, mais je suis confronté au même problème mais sans comprendre la solution. Je souhaite ajourd un champ pour définir l'ancre pour le menu de chaque catégorie. J'ai tenté d'ajouter : array( 'type' => 'text', 'label' => $this->l('Ancre du menu:'), 'name' => 'ancre_menu', 'lang' => true, 'hint' => $this->l('Forbidden characters:').' <>;=#{}' ), Dans le renderForm() controllers/admin/AdminCategoriesController.php ici c'est OK mais si je l'ajoute en ovverride: ovverride/controllers/admin/AdminCategoriesController.php Ca ne fonctionne pas: Je suis tombé sur ce post qui correspond à mon problème mais je comprend pas la solution donné? Quelqu'un pourrait il détailler? Link to comment Share on other sites More sharing options...
Tak Posted August 11, 2016 Share Posted August 11, 2016 Bonjour, Il faut copier la méthode renderForm() de la classe controllers/admin/AdminCategoriesController.php Ensuite ajouter la méthode copiée dans la classe ovverride/controllers/admin/AdminCategoriesController.php avec les modifications désirées. La dernière ligne de cette méthode appelle la méthode parente (celle que l'on a copié à la base) et du coup écrase les modifications : return parent::renderForm(); Il faut à la place appeler la méthode renderForm de la class AdminController : return AdminController::renderForm(); 1 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now