Jump to content

[Module] AdminImportController ajout d'options d'import csv


Recommended Posts

Bonjour,

 

J'essaye de réaliser un module partant du Controller Admin AdminImportController.php

Ceci afin d'ajouter de nouvelles options d'import csv.

 

j'ai copié le contenu du fichier AdminImportController.php ainsi que les 2 fichiers form.tpl et view.tpl

 

Lors de l'affichage dans le module j'obtiens ces erreurs. Je ne suis pas sûr de l'emplacement de ces fichiers dans l'arborescence du module.

Warning: Illegal string offset 'title' in /Applications/MAMP/htdocs/pres/cache/smarty/compile/0a1ecc9dd4a05c9d606a20e0bd45fd394dc8c4d6.file.form.tpl.php on line 125

Notice: Uninitialized string offset: 0 in /Applications/MAMP/htdocs/pres/cache/smarty/compile/0a1ecc9dd4a05c9d606a20e0bd45fd394dc8c4d6.file.form.tpl.php on line 125

 

Est-ce que quelqu'un peut-il m'aider ? Merci par avance

 

Indesign

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

Bonsoir,

 

J'ai créé une nouvelle classe AdminImportcsvController.php pour mon module en intégrant la classe AdminImportController.php

require_once(_PS_ROOT_DIR_.'/modules/importcsv/controllers/admin/AdminImportController.php');

 

Les deux erreurs du post précédent ont disparu, mais rien ne s'affiche.

 

Je ne sais pas comment lier les fichiers tpl (form.tpl et view.tpl).

public function displayForm()
{
return $this->display(__FILE__, 'helpers/form/form.tpl');
}

 

Merci par avance

 

Indesign

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

Bonjour,

 

J'ai repris la méthode du premier post.

• Lors de l'importation native de Prestashop AdminImportController 9 fichiers sont générés dans le cache smarty -> cache -> compile

 

Le fichier 143c195b1abbf89938ab0a2a90a3522a8fb4d2d3.file.button.tpl.php (1 Ko)

Le fichier 07af27aedb536ff0bc378d974b9dd89a665c2c40.file.form.tpl.php (17 Ko)

 

• Lors de l'importation de mon module AdminImportcsvController 8 fichiers sont générés dans le cache

Il manque le fichier 143c195b1abbf89938ab0a2a90a3522a8fb4d2d3.file.button.tpl.php

Le fichier 0a1ecc9dd4a05c9d606a20e0bd45fd394dc8c4d6.file.form.tpl.php (56 Ko) le contenu n'est pas bon !

Erreur :

Warning: Illegal string offset 'title' in /Applications/MAMP/htdocs/pres/cache/smarty/compile/0a1ecc9dd4a05c9d606a20e0bd45fd394dc8c4d6.file.form.tpl.php on line 125

Notice: Uninitialized string offset: 0 in /Applications/MAMP/htdocs/pres/cache/smarty/compile/0a1ecc9dd4a05c9d606a20e0bd45fd394dc8c4d6.file.form.tpl.php on line 125

 

• En copiant le fichier 143c195b1abbf89938ab0a2a90a3522a8fb4d2d3.file.button.tpl.php manquant

- et en copiant le contenu du fichier 07af27aedb536ff0bc378d974b9dd89a665c2c40.file.form.tpl.php de l'import natif dans le fichier 0a1ecc9dd4a05c9d606a20e0bd45fd394dc8c4d6.file.form.tpl.php

- et en cochant

 

Ne jamais recompiler les fichiers de templates ->afin de ne pas écraser les fichiers modifiés

 

La form apparaît correctement. :) et plus d'erreur.

Le soucis vient sûrement du displayForm ou du RenderForm de la form.tpl. return parent::renderForm();

Mais où ?

 

Une aide précieuse d'un DEV serait appréciée. Merci par avance.

 

 

edit

PS : Les deux fichiers form.tpl en pièce jointe.

 

Indesign

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

  • 2 weeks later...

Bonsoir,

 

Je suis lent... mais tenace.

 

J'ai réglé les précédents problèmes : la Form et la View s'affiche. ;)

Deux bémols :

  • Le fichier file.button.tpl.php (1 Ko) n'est pas généré dans le dossier cache (cache/smarty/compile)
    L'icone d'aide ne s'affiche pas dans les deux fenêtres.
    J'ai rajouté dans mon module l'arborescence template/helpers/help_access et le fichier button.tpl . Sans succès. :(
  • Les sept entités contenu dans l'AdminImportController.php du Core affichent correctement les champs disponibles (availableFields).
  • Lors de la sélection du type d'entités (une des miennes : ex alias) les champs disponibles dans la Form à droite ne sont pas mise à jour. :(
    Les champs disponibles affichés sont ceux de la dernière sélection d'entités d'origine de Prestashop.
    Lien avec le fichier AdminImportController.php pour l'affichage des champs disponibles et non avec le fichier AdminImportcsvController.php de mon module ?

Edit ajout de l'extrait Form.tpl

<script type="text/javascript">
$("select#entity").change( function() {

$("#entitie").html($("#entity > option:selected").text().toLowerCase());
$.ajax({
url: 'ajax.php',
data: {
getAvailableFields:1,
entity: $("#entity").val()
},
dataType: 'json',
success: function(j) {
var fields = "";
$("#availableFields").empty();

for (var i = 0; i < j.length; i++)
fields += j[i].field;

$("#availableFields").html(fields);
activeClueTip();
},
error: function(j) {
}
});

});

</script>

 

Indesign

 

Merci par avance,

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

Bonsoir,

 

Dans AdminImportController.php j'ai trouvé ces deux functions qui retourne les available_fields

 

public function renderForm()
available_fields' => $this->getAvailableFields(),

 

* Return fields to be display AS piece of advise
*
* @param $in_array boolean
* @return string or return array
*/
public function getAvailableFields($in_array = false)
{
$i = 0;
$fields = array();
$keys = array_keys($this->available_fields);
array_shift($keys);
foreach ($this->available_fields as $k => $field)
{
if ($k === 'no')
continue;
if ($k === 'price_tin')
$fields[$i - 1] = '<div>'.$this->available_fields[$keys[$i - 1]]['label'].' '.$this->l('or').' '.$field['label'].'<span style="margin-left:16px"></span></div>';
else
{
if (isset($field['help']))
$html = ' <a href="#" class="info_import" title="'.$this->l('Info').'|'.$field['help'].'"><img src="'._PS_ADMIN_IMG_.'information.png"></a>';
else
$html = '<span style="margin-left:16px"></span>';
$fields[] = '<div>'.$field['label'].$html.'</div>';
}
++$i;
}
if ($in_array)
return $fields;
else
return implode("\n\r", $fields);
}

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

Bon, bon, bon... C'est bien la première fois que je vois un sujet aussi bien documenté sur son déroulement bien que je ne perçois pas encore toute sa contenance. Ça change, :)

 

Quel est, grosso modo, le but voulu et l'étape actuellement atteinte, en résumé ? :)

Link to comment
Share on other sites

Merci J. Dance de te pencher sur mon problème, je me sens moins seul. :rolleyes:

 

Le but du module

Ajouter des nouvelles entitées d'import à AdminImportController notamment (ProductDowload, ProductAttachement, ProductComment, Alias etc..)

J'ai modifié AdminImportControllerCore avec succès, mais je souhaiterais pouvoir les intégrer dans un module pour la distribution.

 

L'étape atteinte

L'installation et la désinstallation fonctionne. La Form et la View fonctionne.

- Problème avec l'icone d'aide non affichée

- Problème avec l'affichage des available_fields non réactualisé avec les nouvelles entitées.

 

Merci

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

@J. Dance,

 

Le Select d'entity ne reconnait que les entitées de base de l'AdminImportController mais pas celle de mon module ?

 

En faisant un override de l'AdminImportController j'ai réussi à avoir l'affichage dans les champs disponibles. ;)

Mais normalement je devrais pouvoir les avoir sans passer par un override.

 

Par contre, je n'ai pas réussi pour l'instant (problème de Path je pense) à faire un override dans le module. (Plus propre non ?)

Edited by indesign (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...