Ich versuche, "Träger" Spalte zu Bestellungen Tabelle hinzufügen. Ich weiß, dass ich dieses Feld in fields_list-Array in AdminOrdersController.php hinzufügen muss, aber wenn ich Array auf Feld carrier
erweitern, habe ich unknown column 'carrier'
Fehler in BO. Was mache ich falsch?Hinzufügen von Träger Spalte zu Bestellungen Tabelle in Prestashop Backoffice
Antwort
Bis spät in die Nacht, als Markus dir Anleitung gibt, wie es geht. Ich habe diese Übersteuerung getestet.
In override/controllers/admin
erstellen neue Datei AdminOrdersController.php
mit folgenden Code:
<?php
class AdminOrdersController extends AdminOrdersControllerCore
{
public function __construct()
{
$this->bootstrap = true;
$this->table = 'order';
$this->className = 'Order';
$this->lang = false;
$this->addRowAction('view');
$this->explicitSelect = true;
$this->allow_export = true;
$this->deleted = false;
$this->context = Context::getContext();
$this->_select = '
a.id_currency,
a.id_order AS id_pdf,
CONCAT(LEFT(c.`firstname`, 1), \'. \', c.`lastname`) AS `customer`,
osl.`name` AS `osname`,
IF(carrier.`name` = "0", "-", carrier.`name`) AS `carriername`,
os.`color`,
IF((SELECT so.id_order FROM `'._DB_PREFIX_.'orders` so WHERE so.id_customer = a.id_customer AND so.id_order < a.id_order LIMIT 1) > 0, 0, 1) as new,
country_lang.name as cname,
IF(a.valid, 1, 0) badge_success';
$this->_join = '
LEFT JOIN `'._DB_PREFIX_.'customer` c ON (c.`id_customer` = a.`id_customer`)
LEFT JOIN `'._DB_PREFIX_.'address` address ON address.id_address = a.id_address_delivery
LEFT JOIN `'._DB_PREFIX_.'country` country ON address.id_country = country.id_country
LEFT JOIN `'._DB_PREFIX_.'country_lang` country_lang ON (country.`id_country` = country_lang.`id_country` AND country_lang.`id_lang` = '.(int)$this->context->language->id.')
LEFT JOIN `'._DB_PREFIX_.'carrier` carrier ON a.id_carrier = carrier.id_carrier
LEFT JOIN `'._DB_PREFIX_.'order_state` os ON (os.`id_order_state` = a.`current_state`)
LEFT JOIN `'._DB_PREFIX_.'order_state_lang` osl ON (os.`id_order_state` = osl.`id_order_state` AND osl.`id_lang` = '.(int)$this->context->language->id.')';
$this->_orderBy = 'id_order';
$this->_orderWay = 'DESC';
$this->_use_found_rows = true;
$statuses = OrderState::getOrderStates((int)$this->context->language->id);
foreach ($statuses as $status) {
$this->statuses_array[$status['id_order_state']] = $status['name'];
}
$this->fields_list = array(
'id_order' => array(
'title' => $this->l('ID'),
'align' => 'text-center',
'class' => 'fixed-width-xs'
),
'reference' => array(
'title' => $this->l('Reference')
),
'new' => array(
'title' => $this->l('New client'),
'align' => 'text-center',
'type' => 'bool',
'tmpTableFilter' => true,
'orderby' => false,
'callback' => 'printNewCustomer'
),
'customer' => array(
'title' => $this->l('Customer'),
'havingFilter' => true,
),
);
if (Configuration::get('PS_B2B_ENABLE')) {
$this->fields_list = array_merge($this->fields_list, array(
'company' => array(
'title' => $this->l('Company'),
'filter_key' => 'c!company'
),
));
}
$this->fields_list = array_merge($this->fields_list, array(
'total_paid_tax_incl' => array(
'title' => $this->l('Total'),
'align' => 'text-right',
'type' => 'price',
'currency' => true,
'callback' => 'setOrderCurrency',
'badge_success' => true
),
'payment' => array(
'title' => $this->l('Payment')
),
'carriername' => array(
'title' => $this->l('Carrier'),
'type' => 'text',
'align' => 'text-center',
'class' => 'fixed-width-xl',
'filter_key' => 'carrier!name',
'filter_type' => 'text',
'order_key' => 'carrier!name'
),
'osname' => array(
'title' => $this->l('Status'),
'type' => 'select',
'color' => 'color',
'list' => $this->statuses_array,
'filter_key' => 'os!id_order_state',
'filter_type' => 'int',
'order_key' => 'osname'
),
'date_add' => array(
'title' => $this->l('Date'),
'align' => 'text-right',
'type' => 'datetime',
'filter_key' => 'a!date_add'
),
'id_pdf' => array(
'title' => $this->l('PDF'),
'align' => 'text-center',
'callback' => 'printPDFIcons',
'orderby' => false,
'search' => false,
'remove_onclick' => true
)
));
if (Country::isCurrentlyUsed('country', true)) {
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
SELECT DISTINCT c.id_country, cl.`name`
FROM `'._DB_PREFIX_.'orders` o
'.Shop::addSqlAssociation('orders', 'o').'
INNER JOIN `'._DB_PREFIX_.'address` a ON a.id_address = o.id_address_delivery
INNER JOIN `'._DB_PREFIX_.'country` c ON a.id_country = c.id_country
INNER JOIN `'._DB_PREFIX_.'country_lang` cl ON (c.`id_country` = cl.`id_country` AND cl.`id_lang` = '.(int)$this->context->language->id.')
ORDER BY cl.name ASC');
$country_array = array();
foreach ($result as $row) {
$country_array[$row['id_country']] = $row['name'];
}
$part1 = array_slice($this->fields_list, 0, 3);
$part2 = array_slice($this->fields_list, 3);
$part1['cname'] = array(
'title' => $this->l('Delivery'),
'type' => 'select',
'list' => $country_array,
'filter_key' => 'country!id_country',
'filter_type' => 'int',
'order_key' => 'cname'
);
$this->fields_list = array_merge($part1, $part2);
}
$this->shopLinkType = 'shop';
$this->shopShareDatas = Shop::SHARE_ORDER;
if (Tools::isSubmit('id_order')) {
// Save context (in order to apply cart rule)
$order = new Order((int)Tools::getValue('id_order'));
$this->context->cart = new Cart($order->id_cart);
$this->context->customer = new Customer($order->id_customer);
}
$this->bulk_actions = array(
'updateOrderStatus' => array('text' => $this->l('Change Order Status'), 'icon' => 'icon-refresh')
);
AdminController::__construct();
}
}
So gleichen wie Markus explanantion, ich habe carrier
Tabelle dann in Abfrage auswählen hinzugefügt Namen joinned (haben anzuzeigen gesetzt - wenn keine Träger) und angezeigt es in field_list
mit funktionierendem Filter und Auftrag. Beachten Sie, dass Sie in dieser Außerkraftsetzung nicht parent::__construct();
, sondern AdminController::__construct();
anrufen müssen. Löschen Sie auch PrestaShop Cache bei Bedarf.
Sie sollten die Variablen $ this -> _ select, $ this -> _ join und $ this-> field_list bearbeiten, um den Träger anzuzeigen.
Die $ this -> _ beitreten sollte die folgende
LEFT JOIN `'._DB_PREFIX_.'order_carrier` oc ON (a.`id_order` = oc.`id_order`)
LEFT JOIN `'._DB_PREFIX_.'carrier` carr ON (oc.`id_carrier` = carr.`id_carrier`)
Dann in der Auswahl enthalten haben Sie die carr Tisch, so dass Sie
carr.name as `carriername`
Um den Träger abrufen können. Dann in der Liste Felder sollten Sie so etwas wie
'carriername' => array(
'title' => $this->l('Carrier')
),
Stört verwenden, dass die ersten zwei Elemente sind gültige SQL sein sollte, so verwenden Sie Leerzeichen und Komma an den richtigen Stellen (je nachdem, wo Sie den Code hinzugefügt). Außerdem sollten Sie eine Überschreibung für diese Funktionalität verwenden, damit Sie weiterhin Prestashop-Updates erhalten können (siehe http://doc.prestashop.com/display/PS16/Overriding+default+behaviors#Overridingdefaultbehaviors-Overridingacontroller).
- 1. Prestashop - Spalte mit Link zu einer Bestellung im Backoffice hinzufügen
- 2. Prestashop - Backoffice - Bestellung hinzufügen Adresse anzeigen
- 3. Prestashop 1.6 Redirect Loop auf Backoffice Filter
- 4. AngularUI zu Umbraco Backoffice hinzufügen
- 5. Hinzufügen von Fremdschlüssel Spalte zu Postgresql Tabelle
- 6. Hinzufügen begrenzte Spalte zu Tabelle
- 7. Wie können Sie Mitarbeiter zu Bestellungen hinzufügen?
- 8. Hinzufügen von JavaScript-Code zu bestimmten Seiten mit Prestashop-Modul
- 9. Hinzufügen von Titelfolie Bild zu RMarkdown Träger mit reveal.js
- 10. Hinzufügen multilangage zu Modul PrestaShop
- 11. Hinzufügen von benutzerdefinierten Feld in Bestellungen Magento2
- 12. prestashop 1.7 Wie bearbeite ich die Seite "Produkt hinzufügen" im Backoffice
- 13. Prestashop Backoffice Modul - Ansicht/Smarty/Uncaught Ausnahme SmartyException
- 14. Produkte und Bestellstatus fehlt in Bestellung Abschnitt Backoffice
- 15. Hinzufügen von Spalte zu Bücher Tabelle in Schienen
- 16. Prestashop - Zeigen Sie den vollständigen Namen auf der Seite Bestellliste im Backoffice
- 17. UCanAccess: Spalte zu vorhandener Tabelle hinzufügen
- 18. Hinzufügen von UVP (empfohlener Endverbraucherpreis) zu Prestashop 1.7.1
- 19. Docker 1.12 Schwarm Service Träger hinzufügen
- 20. Prestashop Versandkosten von Staat
- 21. Hinzufügen von Werten zu neu hinzugefügten Spalte einer vorhandenen Tabelle aus Spalte einer anderen vorhandenen Tabelle
- 22. Hinzufügen von Symbolen zu einer bestimmten Tabelle Spalte
- 23. Hinzufügen Zeitstempel Spalte zu der Tabelle erstellt von Abfrage
- 24. Prestashop benutzerdefiniertes Modul hinzufügen Tabellenkopf
- 25. Hinzufügen eines Trenners/Trenners in Prestashop beim Hinzufügen von Sammelaktionen in Produkte
- 26. Hinzufügen zusätzliche Spalte zu sehen, die nicht in der Tabelle
- 27. Tabelle ändern Spalte hinzufügen Syntax
- 28. in Prestashop Eingabefeld auf bo Ordnungstabelle hinzufügen
- 29. Neue Ressource zu Prestashop Webservice hinzufügen
- 30. Prestashop Produkt hinzufügen Kombination