Bienvenue, Invité
Merci de vous identifier ou de vous inscrire.    Mot de passe perdu?

[TUTO] Import Magento .csv via curl
(1 lecteur(s)) (1) Invité(s)
Aller en basPage: 1
SUJET:

[TUTO] Import Magento .csv via curl

#60059
roxo
Fresh Boarder
Messages: 7
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur

[TUTO] Import Magento .csv via curl

Il y a 5 Années, 10 Mois
Karma: 0  
Bonjour,

Je suis étudiant et notamment stagiaire en ce moment.

Dans le cadre de mon stage, j'ai du automatiser l'import dans magento, pour ce faire, j'ai décidé d'utiliser cURL pour me familiariser avec cet outil.

N'ayant trouver aucun topic parlant de l'import via cURL et que j'ai flanché plusieurs heures dessus, je vous link mon travail pour ceux que sa intéressent.

Code :

session_start();

$string = "login[username]=".urlencode('username')."&login[password]=".urlencode('password');
$formulaire = array();

$formulaire["entity"]=urlencode('catalog_product');
$formulaire["behavior"]=urlencode('append');
$formulaire["import_file"] = '@path\of\your\file\file.csv'; //Mettre l'arobase permet d upload le fichier

// Création d'un fichier de cookie, pour la session cURL
// /!\ Si le fichier de cookie n'est pas supprimé à chaque fois, vous n'arriverez plus à vous connecter aux pages du backend de magento

$tmp = realpath('cookie.txt');

if ($tmp) {
unlink($tmp);
fopen($tmp, 'w+');
} else {
fopen('cookie.txt', 'w+');
}

// Connection à la page admin de magento pour se logger
// Grâce à cette étape, vous aurez un cookie indispensable à l'accès du backend

$ch = curl_init('http://domain.magento/index.php/admin/');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $string);
curl_setopt($ch, CURLOPT_COOKIE, session_name().'='.session_id());
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_VERBOSE, 1); // Pas indispensable, mais utile pour voir 
curl_setopt($ch, CURLOPT_COOKIEJAR, realpath('cookie.txt'));
curl_exec($ch);

// Recuperation du form_key, indispensable à l'envoi du formulaire, sans lui sa ne marchera jamais

$ch = curl_init('http://domain.magento/index.php/admin/import/');
curl_setopt($ch, CURLOPT_COOKIEFILE, realpath('cookie.txt'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);

preg_match("#FORM_KEY = '([a-zA-Z0-9]+)';#si", $output, $matches);

$formulaire['form_key'] = $matches[1];

// URL de check du file.csv

$ch = curl_init('http://domain.magento/index.php/admin/import/validate/');
curl_setopt($ch, CURLOPT_COOKIEFILE, realpath('cookie.txt'));
curl_setopt($ch, CURLOPT_VERBOSE, 1); 
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $formulaire);
curl_exec($ch);

// Si le file.csv est correct, le fichier sera deja charger sur magento

$formulaire['import_file'] = "";

// Post du formulaire pour l'import

$ch = curl_init('http://domain.magento/index.php/admin/import/start/');
curl_setopt($ch, CURLOPT_COOKIEFILE, realpath('cookie.txt'));
curl_setopt($ch, CURLOPT_VERBOSE, 1); 
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $formulaire);
curl_exec($ch);

/* ENJOY */

curl_close($ch);




Après pour ceux qui n'ont peur de rien et qui veulent gagner des lignes.

Voici le même code, mais sans la vérification

Code :

session_start();

$string = "login[username]=".urlencode('username')."&login[password]=".urlencode('password');
$formulaire = array();

$formulaire["entity"]=urlencode('catalog_product');
$formulaire["behavior"]=urlencode('append');
$formulaire["import_file"] = 'path\of\your\file\file.csv';

// Création d'un fichier de cookie, pour la session cURL
// /!\ Si le fichier de cookie n'est pas supprimé, vous n'arriverez plus à vous connecter aux pages du backend de magento

$tmp = realpath('cookie.txt');

if ($tmp) {
unlink($tmp);
fopen($tmp, 'w+');
} else {
fopen('cookie.txt', 'w+');
}

// Connection à la page admin de magento pour se logger
// Grâce à cette étape, vous aurez un cookie indispensable à l'accès du backend

$ch = curl_init('http://domain.magento/index.php/admin/');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $string);
curl_setopt($ch, CURLOPT_COOKIE, session_name().'='.session_id());
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_VERBOSE, 1); // Pas indispensable, mais utile pour voir 
curl_setopt($ch, CURLOPT_COOKIEJAR, realpath('cookie.txt'));
curl_exec($ch);

// Recuperation du form_key, indispensable à l'envoi du formulaire, sans lui sa ne marchera jamais

$ch = curl_init('http://domain.magento/index.php/admin/import/');
curl_setopt($ch, CURLOPT_COOKIEFILE, realpath('cookie.txt'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);

preg_match("#FORM_KEY = '([a-zA-Z0-9]+)';#si", $output, $matches);

$formulaire['form_key'] = $matches[1];

$ch = curl_init('http://domain.magento/index.php/admin/import/start/');
curl_setopt($ch, CURLOPT_COOKIEFILE, realpath('cookie.txt'));
curl_setopt($ch, CURLOPT_VERBOSE, 1); 
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $formulaire);
curl_exec($ch);

/* ENJOY */

curl_close($ch);



Je conseille quand même de passer par la phase du test à la main pour être sur de bien formater son file.csv

Et je dédie ce topic, pour tous les développeurs têtus comme moi qui veulent absolument utiliser cURL plutôt que de passer par Mage. ^^'
 
Dernière édition: 04/09/12 à  08:04 Par roxo.
L'administrateur a désactivé l'accès public en écriture.
#60067
roxo
Fresh Boarder
Messages: 7
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur

Re:[TUTO] Import Magento .csv via curl

Il y a 5 Années, 10 Mois
Karma: 0  
Et si sa interesse quelqu'un, je peux link aussi la réindexation via curl
 
L'administrateur a désactivé l'accès public en écriture.
Revenir en hautPage: 1
Modérateur: Gabriiiel, ILOA, zuiko