felek Posted January 23, 2015 Share Posted January 23, 2015 Hello, I'm new in developing prestashop, i create first module using tutorial on page, and create my config file. Now i want to override Admin Orders controller and view. I'm need to add little form to view that will get some data from my config module and than process it. As far I understand to achieve that /modules/my_module/override/controllers/admin/AdminOrdersController.php And inside i create my class. basic markup: class AdminOrdersController extends AdminOrdersControllerCore { public function __construct() { parent::__construct(); } } Now i want to know how inside of my module file i can override template. Template is inside of: admin999fxzxg5\themes\default\template\controllers\orders\helpers\view. I try put in folder modules\mymodule\override\controllers\admin\templates\orders\helpers\view but no result. So my first question is were i can put template file to add form. And than how can i write function inside of controller to retrieve and pass data in this form Thanks in advance Link to comment Share on other sites More sharing options...
felek Posted January 23, 2015 Author Share Posted January 23, 2015 (edited) Ok I was able to override form but only inside override\controllers\admin\templates\orders\helpers\view\And i'm sure this is wrong way Also i copy and paste whole "AdminOrdersController.php" and just assign one variable ($this->tpl_view_vars....) to check if t works and it did.Now I want to know is that correct way of doing overrides in prestashop ? Also how can i create link and assign new function inside of my override controller? I try to follow some doc i Found and end up with this code still its not working any clue what I'm doing wrong way ? Fow now i just want that var showing up than As sad before run function or update form when link is clicked.. <?php class AdminOrdersController extends AdminOrdersControllerCore { public function renderView() { $order = new Order(Tools::getValue('id_order')); if (!Validate::isLoadedObject($order)) $this->errors[] = Tools::displayError('The order cannot be found within your database.'); $customer = new Customer($order->id_customer); $carrier = new Carrier($order->id_carrier); $products = $this->getProducts($order); $currency = new Currency((int)$order->id_currency); // Carrier module call $carrier_module_call = null; if ($carrier->is_module) { $module = Module::getInstanceByName($carrier->external_module_name); if (method_exists($module, 'displayInfoByCart')) $carrier_module_call = call_user_func(array($module, 'displayInfoByCart'), $order->id_cart); } // Retrieve addresses information $addressInvoice = new Address($order->id_address_invoice, $this->context->language->id); if (Validate::isLoadedObject($addressInvoice) && $addressInvoice->id_state) $invoiceState = new State((int)$addressInvoice->id_state); if ($order->id_address_invoice == $order->id_address_delivery) { $addressDelivery = $addressInvoice; if (isset($invoiceState)) $deliveryState = $invoiceState; } else { $addressDelivery = new Address($order->id_address_delivery, $this->context->language->id); if (Validate::isLoadedObject($addressDelivery) && $addressDelivery->id_state) $deliveryState = new State((int)($addressDelivery->id_state)); } $this->toolbar_title = sprintf($this->l('Order #%1$d (%2$s) - %3$s %4$s'), $order->id, $order->reference, $customer->firstname, $customer->lastname); if (Shop::isFeatureActive()) { $shop = new Shop((int)$order->id_shop); $this->toolbar_title .= ' - '.sprintf($this->l('Shop: %s'), $shop->name); } // gets warehouses to ship products, if and only if advanced stock management is activated $warehouse_list = null; $order_details = $order->getOrderDetailList(); foreach ($order_details as $order_detail) { $product = new Product($order_detail['product_id']); if (Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT') && $product->advanced_stock_management) { $warehouses = Warehouse::getWarehousesByProductId($order_detail['product_id'], $order_detail['product_attribute_id']); foreach ($warehouses as $warehouse) { if (!isset($warehouse_list[$warehouse['id_warehouse']])) $warehouse_list[$warehouse['id_warehouse']] = $warehouse; } } } $payment_methods = array(); foreach (PaymentModule::getInstalledPaymentModules() as $payment) { $module = Module::getInstanceByName($payment['name']); if (Validate::isLoadedObject($module) && $module->active) $payment_methods[] = $module->displayName; } // display warning if there are products out of stock $display_out_of_stock_warning = false; $current_order_state = $order->getCurrentOrderState(); if (Configuration::get('PS_STOCK_MANAGEMENT') && (!Validate::isLoadedObject($current_order_state) || ($current_order_state->delivery != 1 && $current_order_state->shipped != 1))) $display_out_of_stock_warning = true; // products current stock (from stock_available) foreach ($products as &$product) { // Get total customized quantity for current product $customized_product_quantity = 0; if (is_array($product['customizedDatas'])) foreach ($product['customizedDatas'] as $customizationPerAddress) foreach ($customizationPerAddress as $customizationId => $customization) $customized_product_quantity += (int)$customization['quantity']; $product['customized_product_quantity'] = $customized_product_quantity; $product['current_stock'] = StockAvailable::getQuantityAvailableByProduct($product['product_id'], $product['product_attribute_id'], $product['id_shop']); $resume = OrderSlip::getProductSlipResume($product['id_order_detail']); $product['quantity_refundable'] = $product['product_quantity'] - $resume['product_quantity']; $product['amount_refundable'] = $product['total_price_tax_excl'] - $resume['amount_tax_excl']; $product['amount_refund'] = Tools::displayPrice($resume['amount_tax_incl'], $currency); $product['refund_history'] = OrderSlip::getProductSlipDetail($product['id_order_detail']); $product['return_history'] = OrderReturn::getProductReturnDetail($product['id_order_detail']); // if the current stock requires a warning if ($product['current_stock'] == 0 && $display_out_of_stock_warning) $this->displayWarning($this->l('This product is out of stock: ').' '.$product['product_name']); if ($product['id_warehouse'] != 0) { $warehouse = new Warehouse((int)$product['id_warehouse']); $product['warehouse_name'] = $warehouse->name; } else $product['warehouse_name'] = '--'; } $gender = new Gender((int)$customer->id_gender, $this->context->language->id); $history = $order->getHistory($this->context->language->id); foreach ($history as &$order_state) $order_state['text-color'] = Tools::getBrightness($order_state['color']) < 128 ? 'white' : 'black'; //felek $my_module_name = Configuration::get('CDSIODEMKA_test1'); //felek end // Smarty assign $this->tpl_view_vars = array( 'test'=>$my_module_name, 'order' => $order, 'cart' => new Cart($order->id_cart), 'customer' => $customer, 'gender' => $gender, 'customer_addresses' => $customer->getAddresses($this->context->language->id), 'addresses' => array( 'delivery' => $addressDelivery, 'deliveryState' => isset($deliveryState) ? $deliveryState : null, 'invoice' => $addressInvoice, 'invoiceState' => isset($invoiceState) ? $invoiceState : null ), 'customerStats' => $customer->getStats(), 'products' => $products, 'discounts' => $order->getCartRules(), 'orders_total_paid_tax_incl' => $order->getOrdersTotalPaid(), // Get the sum of total_paid_tax_incl of the order with similar reference 'total_paid' => $order->getTotalPaid(), 'returns' => OrderReturn::getOrdersReturn($order->id_customer, $order->id), 'customer_thread_message' => CustomerThread::getCustomerMessages($order->id_customer, null, $order->id), 'orderMessages' => OrderMessage::getOrderMessages($order->id_lang), 'messages' => Message::getMessagesByOrderId($order->id, true), 'carrier' => new Carrier($order->id_carrier), 'history' => $history, 'states' => OrderState::getOrderStates($this->context->language->id), 'warehouse_list' => $warehouse_list, 'sources' => ConnectionsSource::getOrderSources($order->id), 'currentState' => $order->getCurrentOrderState(), 'currency' => new Currency($order->id_currency), 'currencies' => Currency::getCurrenciesByIdShop($order->id_shop), 'previousOrder' => $order->getPreviousOrderId(), 'nextOrder' => $order->getNextOrderId(), 'current_index' => self::$currentIndex, 'carrierModuleCall' => $carrier_module_call, 'iso_code_lang' => $this->context->language->iso_code, 'id_lang' => $this->context->language->id, 'can_edit' => ($this->tabAccess['edit'] == 1), 'current_id_lang' => $this->context->language->id, 'invoices_collection' => $order->getInvoicesCollection(), 'not_paid_invoices_collection' => $order->getNotPaidInvoicesCollection(), 'payment_methods' => $payment_methods, 'invoice_management_active' => Configuration::get('PS_INVOICE', null, null, $order->id_shop), 'display_warehouse' => (int)Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT'), 'HOOK_CONTENT_ORDER' => Hook::exec('displayAdminOrderContentOrder', array( 'order' => $order, 'products' => $products, 'customer' => $customer) ), 'HOOK_CONTENT_SHIP' => Hook::exec('displayAdminOrderContentShip', array( 'order' => $order, 'products' => $products, 'customer' => $customer) ), 'HOOK_TAB_ORDER' => Hook::exec('displayAdminOrderTabOrder', array( 'order' => $order, 'products' => $products, 'customer' => $customer) ), 'HOOK_TAB_SHIP' => Hook::exec('displayAdminOrderTabShip', array( 'order' => $order, 'products' => $products, 'customer' => $customer) ), ); return AdminOrdersController::renderView(); } } Edited January 23, 2015 by felek (see edit history) Link to comment Share on other sites More sharing options...
felek Posted January 28, 2015 Author Share Posted January 28, 2015 (edited) If any one look for this. You have to register new hook during installation of module like so $this->registerHook('displayAdminOrder') After that function public function hookdisplayAdminOrder($hook) and inside put your logic and at the end return template return $this->display(__FILE__, 'views/templates/.....'); No controllers overrides are need. Can be marked as solved. Edited January 28, 2015 by felek (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now