1 - Bruno s'en tamponne le coquillard depuis qu'il a vendu Presta aux italiens
2 - Webaxx est le champion de la bidouille
Un des buts de Phenix est de pouvoir se passer de tous ses modules qui s'empilent mais on ne pourra jamais prévoir tous les cas de figure.
Ajouter une colonne en bdd c'est un override de 4 lignes dans la classe liée
<?php
class Product extends ProductCore
{
public $my_new_column;
public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null)
{
self::$definition['fields']['my_new_column'] = array('type' => self::TYPE_INT, 'shop' => true, 'validate' => 'isUnsignedId');
parent::__construct($id_product, $full, $id_lang, $id_shop, $context);
}
}
Après vous pouvez écrire un module qui s'occupe de gérer vos overrides et listes (il y a des hooks pour ça: actionAdminOrdersListingFieldsModifier par exemple.
public function hookActionAdminOrdersListingFieldsModifier(array $params)
{
// If hook is called in AdminController::processFilter() we have to check existence
if (isset($this->params['select'])) {
$this->params['select'] .= ', a.`my_new_column`';
}
if (!array_key_exists('my_new_column', $this->params['fields'])) {
$tmp_params = $this->params['fields'];
$this->params['fields'] = [];
$prev_key = '';
foreach ($tmp_params as $key => $tmp_param) {
if ($prev_key === "reference") {
$this->params['fields']['my_new_column'] = [
'title' => $this->module->l('Nom de ma Colonne'),
'align' => 'text-center',
'class' => 'fixed-width-xs',
'filter_key' => 'a!my_new_column',
'order_key' => 'a!my_new_column',
];
}
$this->params['fields'] += [
$key => $tmp_param
];
$prev_key = $key;
}
}
}