Как нужно в js оформлять вывод

228
10 марта 2017, 00:39

Передаю id категории в в модель, там идет проверка и отдает мне массив, а как оформить не знаю views

<script>
function give(val) {
    var obj = document.getElementById('block');
    $.ajax({
        type: 'POST',
        url: '/index.php?route=product/category/edit',
        data:{"id":val},
        success: function(data){
            $('#block').html(data);
        }
    });
}

здесь я получаю нужный мне id и передаю его в контроллер

 $this->model_product_category->getCategoryId($this->request->post['id']);

потом передаю в модель

 public function getCategoryId(){
    $id = isset($this->request->post['id'])?$this->request->post['id']:null;
    $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category  WHERE category_id = '" .  $id . "'");
    $array = json_decode(json_encode($query), true);
    return $array;
}

views

<div id=block></div>

тут получаю ответ

Array ( [num_rows] => 1 [row] => Array ( [category_id] => 85 [name] => Носки [parent_id] => 82 [top] => 0 [column] => 0 [sort_order] => 0 [status] => 1 [date_added] => 0000-00-00 00:00:00 [date_modified] => 0000-00-00 00:00:00 ) [rows] => Array ( [0] => Array ( [category_id] => 85 [name] => Носки [parent_id] => 82 [top] => 0 [column] => 0 [sort_order] => 0 [status] => 1 [date_added] => 0000-00-00 00:00:00 [date_modified] => 0000-00-00 00:00:00 ) ) )

подскажите где оформляться вывод.

Answer 1

В opencart передача данных в файлы представления (view) производится через массив $data, который наполняется в контроллере (вы вправе менять имя массива, но механизм останется неизменным).

/category.php
$data['array'] = $array;

В файле представления все элементы $data вызываются как переменные и массивы. Все циклические выводы в файлах представления производятся через конструкцию foreach:

/category.tpl 
<div id=block>//html разметка показана для примера, в вашем шаблоне может отличаться.
    <?php foreach($array as $item){ ?>
        <p>category_id: <?=$item['category_id'];?></p>
        <p>name: <?=$item['name'];?></p>
        ...
    <?php } ?>
</div>
Answer 2

Обычно делают с помощью шаблонизатора. Тут есть подробная инструкция как работать с одним из них. Возможно Вам это подойдет)

Answer 3

Может кому то понадобиться полный код

Передача id

view

<form action="" method="post" enctype="multipart/form-data">
      <table class="table table-bordered table-striped">
        <thead class="thin-border-bottom">
        <tr>
          <th style="width: 10%;">
            <i class="ace-icon fa fa-caret-right blue"></i><?php echo $text_id ;?>
          </th>
          <th>
            <i class="ace-icon fa fa-caret-right blue"></i><?php echo $text_name_category ;?>
          </th>
          <th class="hidden-480">
            <i class="ace-icon fa fa-caret-right blue"></i><?php echo $text_status_category ;?>
          </th>
          <th style="width: 8%">
            <i class="ace-icon fa fa-caret-right blue"></i><?php echo "Изменить" ;?>
          </th>
        </tr>
        </thead>
        <?php foreach ($category as $category){ ?>
        <tbody>
        <tr>
          <td><?php echo $category['category_id']?></td>
          <input type="hidden" name="category_id" id="category_id"  value="<?php echo $category['category_id'];?>">
          <td><?php echo $category['name'];?></td>
          <?php if($category['status'] == 1){ ?>
          <td class="hidden-480">
            <span class="label label-info arrowed-right arrowed-in"><?php echo $text_on ;?></span>
          </td>
          <?php } else { ?>
          <td class="hidden-480">
            <span class="label label-info arrowed-right arrowed-in"><?php echo $text_off ;?></span>
          </td>
          <?php } ?>
          <td>
            <center><button class="btn btn-xs btn-danger" id="<?php echo $category['category_id'];?>" type="button" data-toggle="modal"  data-target="#myEdit" onclick="give(this.id)" >
                <i class="ace-icon fa fa-edit bigger-120"></i>
                <span class="bigger-110"></span>
              </button></center>
          </td>
        </tr>
        </tbody>
        <?php } ?>
      </table>
    </form>

js тут я получаю нужный мне id и передаю в контроллер

<script>
function give(val) {
    var obj = document.getElementById('block');
    $.ajax({
        type: 'POST',
        url: '/index.php?route=product/category/edit',
        data:{"id":val},
        success: function(data){
            $('#block').html(data);
        }
    });
}

controller

    public function edit(){
    if (!$this->customer->isLogged()) {
        $this->session->data['redirect'] = $this->url->link('account/account', '', 'SSL');
        $this->response->redirect($this->url->link('account/login', '', 'SSL'));
    }

    $this->load->model('product/category');
    $this->model_product_category->getCategoryId($this->request->post['id']);
    $data['array'] = $this->model_product_category->getCategoryId();

    $data['column_left'] = $this->load->controller('common/column_left');
    $data['column_right'] = $this->load->controller('common/column_right');
    $data['content_top'] = $this->load->controller('common/content_top');
    $data['content_bottom'] = $this->load->controller('common/content_bottom');
    $data['footer'] = $this->load->controller('common/footer');
    $data['header'] = $this->load->controller('common/header');
    if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category_edit.tpl')) {
        $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/category_edit.tpl', $data));
    } else {
        $this->response->setOutput($this->load->view('default/template/product/category_edit.tpl', $data));
    }
}

передаю данные модель

public function getCategoryId(){
    $id = isset($this->request->post['id'])?$this->request->post['id']:null;
    $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category  WHERE category_id = '" .  $id . "'");
    return $query->row;
}

тут я создал template/product/category_edit.tpl

где сделал вывод из контролера

я делал с помощью модальных окон и вывод нужных данных у меня происходил

/template/product/category.tpl

view

<div class="modal fade" id="myEdit" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
      <div class="modal-dialog" role="document">
        <div class="modal-content">
          <form action="<?php echo $edit;?>" method="post" enctype="multipart/form-data" class="form-horizontal">
            <div class="modal-body">
              <label ><?php echo $text_enter_category; ?></label>
              <div id=block></div>
              <label ><?php echo $text_parent_category; ?></label>
            </div>
            <div class="modal-footer">
              <center>
                <button type="submit" class="btn btn-primary"><?php echo $button_enter_category ;?></button>
                <button type="button" class="btn btn-danger" data-dismiss="modal"><?php echo $text_close ;?></button>
              </center>
            </div>
          </form>
        </div>
      </div>
    </div><!--endmodal-->
READ ALSO
Сравнение числа

Сравнение числа

Переменная num1 больше чем x, тогда почему не срабатывает условие

368
Удаление и поворот страниц PDF средствами PHP

Удаление и поворот страниц PDF средствами PHP

Столкнулся с проблемой: нужна библиотека по работе с существующими PDF файламиНеобходимо создать мини-редактор PDF с функцией поворота и удаления...

285
WordPress: пагинация внутри поста

WordPress: пагинация внутри поста

Какую функцию использовать для работы с пагинацией внутри поста, я говорю не о пагинации по записямТо есть мы имеем пост в котором 3 страницы

318
Чтение/запись в бинарный файл С++

Чтение/запись в бинарный файл С++

Здравствуйте, я реализую свой класс String и создаю свой класс `City

252