Opencart 2.3 создание нового модуля администратора, нужна помощь - PullRequest
0 голосов
/ 16 января 2019

Я создал новый простой модуль для OC2.3, который получает некоторые данные из таблицы OC product_special.

У меня немного сложено, и я всегда получаю пустой экран при обновлении шаблона модуля. Что такое мой ложный вызов, и я не могу получить значения из запроса модели?

Итак, мой файл контроллера, помещенный в admin / controller / extension / module, с именем SpecialPrices.php содержит ниже:

    <?php
   class ControllerExtensionModuleSpecialprices extends Controller {
    private $error = array();

   public function index() {

   ..............................

    }

// My new function

   public function myFunction() {

        $this->load->language('extension/module/SpecialPrices');
        $this->document->setTitle($this->language->get('heading_title'));
        $this->load->model('extension/module/SpecialPrices');

        $products = $this->model_extension_module_SpecialPrices->getProductSpecials($data);

            foreach ($products as $product) {
                $data['products'][] = array(
                    'product_id' => $product['product_id'],
                    'price'       => $product_info['price']

                );
            }

        $data['heading_title'] = $this->language->get('heading_title');
        $data['text_edit'] = $this->language->get('text_edit');
        $data['text_title'] = $this->language->get('text_title');
        $data['text_product_id'] = $this->language->get('text_product_id');
        $data['text_price'] = $this->language->get('text_price');

        $data['header'] = $this->load->controller('common/header');
        $data['column_left'] = $this->load->controller('common/column_left');
        $data['footer'] = $this->load->controller('common/footer');


        $this->response->setOutput($this->load->view('extension/module   /SpecialPrices', $data));

    }

   ...........
  1. Файл моей модели в admin / model / extension / module с именем SpecialPrices.php содержит ...

        public function getProductSpecials($data) {
    
        $sql = "SELECT * FROM `" . DB_PREFIX ."product_special` ";
        $query = $this->db->query($sql);
        return $query->rows;
        }
    
  2. В моем шаблоне SpecialPrices.tpl, созданном по пути admin / view / template / extension / module, пытаюсь получить значения из указанного выше запроса

    <?php echo $header; ?><?php echo $column_left; ?>
    
    <div id="content">
    <div class="page-header"> 
    .......
    <?php echo $product_id; ?>
    <?php echo $price; ?>
    .........
    
    1. в admin / language / en-gb / extension / module есть файл SpecialPrices.php

// Текст $ _ ['text_extension'] = 'Расширения'; $ _ ['text_success'] = 'Успех: Вы установили массовые специальные цены на продукты!'; $ _ ['text_edit'] = 'Редактировать модуль массовых специальных цен';

1 Ответ

0 голосов
/ 16 января 2019

На первый взгляд есть ошибка, которую вы оставили после пробела module:

$this->response->setOutput($this->load->view('extension/module   /SpecialPrices', $data));

Должно быть:

$this->response->setOutput($this->load->view('extension/module/SpecialPrices', $data));

Какие ошибки вы получаете в журнале ошибок? В файле контроллера вы должны поместить свой код в public function index() {//your code} или вызвать функцию где-нибудь .. если вы ее создали. Я не вижу, где вы это называете. Если у вас есть массив ваших данных, которые вызывают в tpl, вы должны сделать это так:

<?php foreach ($products as $product) { ?>

<?php echo $product['product_id']; ?>
<?php echo $product['price']; ?>
<?php }?>

OK. отредактировано и работает: контроллер mymodule.php:

 <?php
class ControllerExtensionModuleMymodule extends Controller {

  public function index() {

        $this->load->language('extension/module/mymodule');
        $this->document->setTitle($this->language->get('heading_title'));
        $this->load->model('extension/module/mymodule');

        $products = $this->model_extension_module_mymodule->getProductSpecials();

            foreach ($products as $product) {
                $data['products'][] = array(
                    'product_id' => $product['product_id'],
                    'price'       => $product['price']

                );
            }

            $data['heading_title'] = $this->language->get('heading_title');
        $data['text_edit'] = $this->language->get('text_edit');
        $data['text_title'] = $this->language->get('text_title');
        $data['text_product_id'] = $this->language->get('text_product_id');
        $data['text_price'] = $this->language->get('text_price');




       $data['header'] = $this->load->controller('common/header');
        $data['column_left'] = $this->load->controller('common/column_left');
        $data['footer'] = $this->load->controller('common/footer');

        $this->response->setOutput($this->load->view('extension/module/mymodule', $data));
    }

 }

модель ... mymodule.php:

 <?php
 class ModelExtensionModuleMymodule extends Model {
 public function getProductSpecials() {

    $sql = "SELECT * FROM `" . DB_PREFIX ."product_special` ";
    $query = $this->db->query($sql);
    return $query->rows;
    }
 }

mumodule.tpl

<?php echo $header; ?><?php echo $column_left; ?>
<div id="content">
  <div class="page-header">
<div class="container-fluid">
<?php foreach ($products as $product) { ?>

<?php echo $product['product_id']; ?>
<?php echo $product['price']; ?>
<?php }?>
</div>
</div>
</div>
<?php echo $footer; ?>

После добавления файлов не забудьте установить права доступа в admin> setting> usergroup> Administrator

...