我在安装了 Prestashop 的同一台主机上安装了 Userfrosting。 Userfrosting 使用与 Prestashop 相同的数据库。
我想创建一个页面,在 Userfrosting 上注册的用户可以查看他们在我的电子商务上的销售情况。 (Prestashop 供应商 = userfrosting 用户)
如何在该页面上进行自定义 SQL 查询? 我发现了一个查询,我可以在其中按供应商在 prestashop 上过滤销售,但不知道如何使用 UserFrosting(它使用 html 页面)来实现它。
最佳答案
虽然我不推荐这种方法,但这是一种无需进入 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 twig 变量的内容的代码。这将扩展 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
,您应该从表中获取信息。