我实现了一个模块,并尝试通过将数据交换器保存在配置表中来在模块的Prestashop中使用交换。数据以1,2,3格式很好地记录下来,但另一方面,恢复不起作用,我的表仍然为空。
这些是开关状态的ID。
这是我的displayForm:
public function displayForm()
{
// Get default language
$default_lang = (int)Configuration::get('PS_LANG_DEFAULT');
// File
$file = Configuration::get('ANALYTICS_VUEJS_JSON_GOOGLE');
// Init Fields form array
$fields_form[0]['form'] = array(
'legend' => array(
'title' => $this->l('Configuration'),
),
'input' => array(
/*array(
'type' => 'text',
'label' => $this->l('Google UA-XXXXX'),
'name' => 'ANALYTICS_VUEJS_GOOGLE_KEY',
'size' => 20
),*/
/*array(
'type' => 'select',
'label' => $this->l('Status commande en préparation'),
'desc' => $this->l('Sélectionner le status pour les commandes en cours de préparation.'),
'name' => 'ANALYTICS_VUEJS_ORDERS_PREPARATION[]',
'required' => false,
'options' => array(
'query' => OrderState::getOrderStates($default_lang),
'id' => 'id_order_state',
'name' => 'name',
)
),*/
array(
'type' => 'swap',
'label' => $this->l('Status commande en préparation'),
'name' => 'ANALYTICS_VUEJS_ORDERS_PREPARATION',
'required' => false,
'multiple' => true,
'options' => array(
'query' => OrderStateCore::getOrderStates($default_lang),
'id' => 'id_order_state',
'name' => 'name'
),
),
array(
'type' => 'file',
'label' => $this->l('JSON google ') . '<br/>
<a target="_blank" href="https://console.developers.google.com">' . $this->l('Générer le fichier JSON') . '</a><br/>
<ul style="list-style-type: none; text-align: left;" class="col-md-12">
<li>
' . $this->l('1 - Connectez vous à votre compte Google') . '
</li>
<li>
' . $this->l('2 - Sélectionner votre projet. Cliquez dessus puis sur la fenêtre qui apparaît sur le lien "Nouveau projet"') . '
</li>
<li>
' . $this->l('3 - Remplissez le nom du projet') . '
</li>
<li>
' . $this->l('4 - En haut de l\'écran, vous verrez un bouton "Activer les API et les services". Cliquez sur ce bouton et recherchez Analytics.') . '
</li>
<li>
' . $this->l('5 - Sélectionner "Analytics API", puis cliquer sur "Activer"') . '
</li>
<li>
' . $this->l('6 - Cliquer sur le bouton "Créer des identifiant" et cliquer sur le lien "compte de service"') . '
</li>
<li>
' . $this->l('7 - Remplisser le premier champs et sélectionner les rôles: "Lecteur de l\'utilisation du service" et "Utilisateur du compte de service" puis cliquer sur "Créer"') . '
</li>
<li>
' . $this->l('8 - Dans la colonne "Actions" cliquer sur ') . "<i class=\"material-icons\">more_vert</i>" . $this->l('puis Créer une clé') . '
</li>
<li>
' . $this->l('9 - Sélectionner "JSON" et terminer en cliquant sur "CREER"') . '
</li>
<li>
' . $this->l('10 - Ajouter le compte de service à votre compte Google Analytics (se termine par .iam.gserviceaccount.com) dans la gestion des utilisateurs.') . '
</li>
</ul>',
'desc' => $this->l('Insérer le fichier JSON de google') . ($file != '' ? '<div style="color: green;"><br/><i class="material-icons"> done</i>' . $file . '</div>' : '<div style="color: red;"><br/><i class="material-icons"> close</i>' . $this->l('Aucun fichier JSON Google') . '</div>'),
'name' => 'ANALYTICS_VUEJS_JSON_GOOGLE',
),
array(
'type' => 'text',
'label' => $this->l('Moyen de payment Amazon'),
'desc' => $this->l('Sélectionner le moyen de payment Amazon.'),
'name' => 'ANALYTICS_VUEJS_PAYMENTS_AMAZON',
'required' => false,
'options' => array(
'value' => 'toto'
)
),
array(
'type' => 'text',
'label' => $this->l('Moyen de payment Cdiscount'),
'desc' => $this->l('Sélectionner le moyen de payment Cdiscount.'),
'name' => 'ANALYTICS_VUEJS_PAYMENTS_CDISCOUNT',
'required' => false
),
),
'buttons' => array(
array(
'name' => 'submitAnalyticsvuejsreloadNpm',
'title' => $this->l('Reload NPM'),
'icon' => 'process-icon-refresh',
'type' => 'submit'
),
array(
'name' => 'submitAnalyticsvuejsBuild',
'title' => $this->l('Build NPM'),
'icon' => 'process-icon-flag',
'type' => 'submit'
)
),
'submit' =>
array(
'title' => $this->l('Save'),
'class' => 'btn btn-default pull-right'
)
);
$helper = new HelperForm();
// Module, token and currentIndex
$helper->module = $this;
$helper->name_controller = $this->name;
$helper->token = Tools::getAdminTokenLite('AdminModules');
$helper->currentIndex = AdminController::$currentIndex . '&configure=' . $this->name;
// Language
$helper->default_form_language = $default_lang;
$helper->allow_employee_form_lang = $default_lang;
// Title and toolbar
$helper->title = $this->displayName;
$helper->show_toolbar = true; // false -> remove toolbar
$helper->toolbar_scroll = true; // yes - > Toolbar is always visible on the top of the screen.
$helper->submit_action = 'submit' . $this->name;
$helper->toolbar_btn = array(
'save' =>
array(
'desc' => $this->l('Save'),
'href' => AdminController::$currentIndex . '&configure=' . $this->name . '&save' . $this->name .
'&token=' . Tools::getAdminTokenLite('AdminModules'),
),
'back' => array(
'href' => AdminController::$currentIndex . '&token=' . Tools::getAdminTokenLite('AdminModules'),
'desc' => $this->l('Back to list')
)
);
// Load current value
$helper->fields_value['ANALYTICS_VUEJS_GOOGLE_KEY'] = Configuration::get('ANALYTICS_VUEJS_GOOGLE_KEY');
/*$helper->fields_value['ANALYTICS_VUEJS_ORDERS_PREPARATION'] = Configuration::get('ANALYTICS_VUEJS_ORDERS_PREPARATION');*/
$helper->fields_value['ANALYTICS_VUEJS_ORDERS_PREPARATION_selected[]'] = explode(',', Configuration::get('ANALYTICS_VUEJS_ORDERS_PREPARATION'));
$helper->fields_value['ANALYTICS_VUEJS_PAYMENTS_AMAZON'] = Configuration::get('ANALYTICS_VUEJS_PAYMENTS_AMAZON');
$helper->fields_value['ANALYTICS_VUEJS_PAYMENTS_CDISCOUNT'] = Configuration::get('ANALYTICS_VUEJS_PAYMENTS_CDISCOUNT');
return $helper->generateForm($fields_form);
}
我的getContent:
public function getContent()
{
$output = null;
if (Tools::isSubmit('submit' . $this->name)) {
// Values
$googleKey = strval(Tools::getValue('ANALYTICS_VUEJS_GOOGLE_KEY'));
$ordersPrepa = Tools::getValue('ANALYTICS_VUEJS_ORDERS_PREPARATION_selected');
$file = strval(Tools::getValue('ANALYTICS_VUEJS_JSON_GOOGLE'));
$cdiscount = strval(Tools::getValue('ANALYTICS_VUEJS_PAYMENTS_CDISCOUNT'));
$amazon = strval(Tools::getValue('ANALYTICS_VUEJS_PAYMENTS_AMAZON'));
Configuration::updateValue('ANALYTICS_VUEJS_GOOGLE_KEY', $googleKey);
Configuration::updateValue('ANALYTICS_VUEJS_ORDERS_PREPARATION', implode(',', $ordersPrepa));
Configuration::updateValue('ANALYTICS_VUEJS_JSON_GOOGLE', $file);
Configuration::updateValue('ANALYTICS_VUEJS_PAYMENTS_CDISCOUNT', $cdiscount);
Configuration::updateValue('ANALYTICS_VUEJS_PAYMENTS_AMAZON', $amazon);
$ext = pathinfo($_FILES['ANALYTICS_VUEJS_JSON_GOOGLE']['name'], PATHINFO_EXTENSION);
$targetPath = _PS_MODULE_DIR_ . 'analyticsvuejs/';
$name = explode('.', $_FILES['ANALYTICS_VUEJS_JSON_GOOGLE']['name']);
if ($_FILES['ANALYTICS_VUEJS_JSON_GOOGLE']['name'] != "") {
if ($_FILES['ANALYTICS_VUEJS_JSON_GOOGLE']['type'] === 'application/json') {
$uploader = new \Uploader('ANALYTICS_VUEJS_JSON_GOOGLE');
$uploader->setSavePath($targetPath);
$uploader->process($name[0] . '.' . $ext);
Configuration::updateValue('ANALYTICS_VUEJS_JSON_GOOGLE', $_FILES['ANALYTICS_VUEJS_JSON_GOOGLE']['name']);
$output = $this->displayConfirmation($this->l('Configuration mis à jour'));
} else {
$output = $this->displayError($this->l('Format non autorisé.'));
}
}
}
return $output . $this->postProcess() . $this->displayForm();
}
谢谢您的帮助。