2015-10-06 2 views
4

Я установил Userfrosting на том же хостинге, где также установлен Prestashop. Userfrosting использует ту же базу данных, что и Prestashop.Как добавить пользовательский запрос MySQL на страницу userfrosting, которая совместно использует базу данных с Prestashop?

Я хочу создать страницу, на которой пользователи, зарегистрированные в Userfrosting, могут просматривать свои продажи в своей электронной коммерции. (Prestashop supplier = userfrosting user)

Как я могу создать собственный SQL-запрос на этой странице? Я нашел запрос, где я могу фильтровать продажи поставщиками на prestashop, но не знаю, как его реализовать с помощью UserFrosting (он использует html-страницы).

+0

Прошли ли вы через обучающие программы UserFrosting? Он использует механизм шаблонов Twig, поэтому вам нужно делать ваши запросы в классах контроллеров, а затем передавать результаты в свой призыв к 'render'. – alexw

ответ

2

Хотя я не рекомендую этот метод, но это простой способ запроса таблицы и отображения информации на странице без перехода в Userfrostings MVC.

В index.php чуть ниже комментарии к страницам используйте этот код, чтобы зарегистрировать страницу с адресом url как /mysales, он также извлекает информацию пользователя из таблицы user_sales и отображает mysales.twig, чтобы отобразить эту информацию.

$app->get('/mysales/?', function() use ($app) { 
    // Access-controlled page 
    if (!$app->user->checkAccess('uri_dashboard')){ 
     $app->notFound(); 
    } 
    $db_config = $app->config('db'); 
    $db_mysqli = new mysqli($db_config['db_host'], $db_config['db_user'], $db_config['db_pass'], $db_config['db_name']); 
    $sales_rows = array(); 
    $result = $db_mysqli->query('select `description`, `total` from `user_sales` where `user_id` = 10 '); 
    if($result){ 
     while($row = $result->fetch_assoc()) { 
      $sales_rows[] = $row; 
     } 
    } 
    $app->render('mysales.twig', [ //calls to render mysales.twig 
     'sales_rows' => $sales_rows //passing variables to twig 
    ]); 
}); 

Теперь создайте mysales.twig внутри userfrosting/templates/themes/default папки, имеющий код для отображения содержимого из sales_rows прута переменного. Это продлит dashboard-layout.twig так, чтобы навигационные панели оставались на месте.

{% extends "layouts/layout-dashboard.twig" %} 
{% set page_group = "dashboard" %} 

{% block page %} 
    {% set page = page | merge({ 
     "title"  : "My Sales", 
     "description" : "" 
    }) %} 
    {{ parent() }} 
{% endblock %} 

{% block content %} 
<h1>My Sales</h1> 
<table border="1"> 
    <tbody> 
     <tr> 
      <td><strong>Description </strong></td> 
      <td><strong>Total </strong></td> 
     </tr> 
     {% for sales in sales_rows %} 
     <tr><td>{{ sales.description }}</td><td>{{ sales.total }}</td></tr> 
     {% endfor %} 
    </tbody> 
</table> 
{% endblock %} 

и это так теперь, если вы войти и перейти к /mysales вы должны получить информацию из таблицы.