Как правильно выводить шаблоны?

Есть таблица с товарами, которая имеет следующую структуру:

|ID       |NAME            |COUNT        |PROVIDER          |DATEOFPURCHASE      |CATEGORY          
|1        |Банан           |20           |Иван              |2007-01-01          |Fruits
|2        |Помидор         |500          |                  |2001-01-01          |Vegetables
|1        |Телефон         |2            |Альбинос          |                    |Phone

Делаю запрос в бд и вывожу товары с выбранной категорией

    $category = $_POST['category'];
    $stock_list = [];
    $stock_view = $dbpdo->prepare("SELECT * FROM products 
                                   WHERE  category = ? 
                                   AND count > 0 
                                   ORDER BY id DESC");
    $stock_view->execute([$category]);
    if($stock_view->rowCount()>0) {
        while ($row = $stock_view->fetch()) {
        //заполняю массив
        $stock_list[] = [
                'id' => $row['id'],
                'name' => $row['name'],
                'count' =>  $row['count'],
                'provider' => $row['provider'],
                'date' => $row['DATEOFPURCHASE']
            ]; 

       }

      //далее отправляю массив в шаблон
       echo $tpl = $twig->render('page/tpl.twig', ['table' => $stock_list]);
    }

Теперь с чем у меня возникает проблема. Для примера я тут привел всего несколько столбцов и категорий, но на деле их больше и в зависимости от категории товара, выводиться таблица, например для Vegetables столбец provider не нужно выводить, а для фруктов нужно и так же для телефонов не нужно DATEOFPURCHASE а для остальных нужно. Единственный вариант, который пришел мне в голову, это в твиге сделать шаблон для каждой категории и проверять категорию if-ми и выводить нужный блок. Но мне кажется, что этот вариант ужасный и явно есть решение по лучше. Можно было бы сделать ифами, если было всего 2-3 категории, то не критично сделать пару шаблонов и страниц, но пару месяцев назад было 5 категорий а сейчас 30, не уверен, что через год не будет 200 и писать для каждого свой шаблон думаю не лучший вариант. Каким образом это можно автоматизировать

Пожалуйста, помогите мне решить эту проблему, буду благодарен. Любая информация по теме будет полезна.


Ответы (1 шт):

Автор решения: Sasha

Самое простое решение - создать для каждой уникальной группы товаров свои таблицы в базе данных. Например в Помидоре и Телефоне ненужно выводить PROVIDER, значит создаёшь таблицу без параметра PROVIDER. В Банане и Яблоке наоборот нужно выводить PROVIDER, но ненужно выводить DATEOFPURCHASE, значит создаешь таблицу без параметра DATEOFPURCHASE. Надеюсь, что внятно объяснил

→ Ссылка