Добавить товары в избранное
Всем привет.
У меня товары выводятся из базы данных в таблицы
Сниппет addfavorites (пока без запроса):
P.S. Я понимаю, что есть готовые компоненты, но у меня совсем нет времени в них разбираться
У меня товары выводятся из базы данных в таблицы
{var $services = '!hookservicemain' | snippet}
{foreach $services as $service}
<hr>
<div class='service'>
<table class='service'>
<tr>
<td class='service' id="name", value="{$service.name}"><b>{$service.name}</b></td>
<td class='service' id="id_service", value="{$service.id_service}">{$service.id_service}</td>
<td class='button category'>Категория: {$service.category}</td>
</tr>
<tr>
<td class='service' id="cost", value="{$service.price}">Стоимость: {$service.price} ₽</td>
<td class='service'>{$service.phone}</td>
<td class='button'></td>
</tr>
<tr>
<td class='service'>Время: {$service.time} минут</td>
<td class='service' id="address", value="{$service.address}">{$service.address}</td>
<td class='button'>
[[AjaxSnippet?
&snippet=`addfavorites`
&as_mode=`onclick`
&wrapper=`tpl.Favorite`
]]
</td>
</tr>
<tr>
<td class='service'>Компания: {$service.mobilephone}</td>
<td class='service'>{$service.city}</td>
<td class='button'><button class="center">Записаться</button></td>
</tr>
</table>
</div>
{/foreach}Нужно при нажатии кнопки добавлять товар в таблицу в базе данных. Но я не понимаю, как получить данные именно того товара, у которого была нажата кнопка. Пыталась реализовать с помощью AjaxSnippet, но сниппет не вызывается.Сниппет addfavorites (пока без запроса):
<?php
$modx->log(xPDO::LOG_LEVEL_ERROR,'Добавить в избранное');
$name = $hook->getValue('name');
$id_service = $hook->getValue('id_service');
$cost = $hook->getValue('cost');
$address = $hook->getValue('address');
$id_user = $modx->user->get('id');
$modx->log(xPDO::LOG_LEVEL_ERROR, print_r($name, 1));
$modx->log(xPDO::LOG_LEVEL_ERROR, print_r($id_service, 1));
$modx->log(xPDO::LOG_LEVEL_ERROR, print_r($cost, 1));
$modx->log(xPDO::LOG_LEVEL_ERROR, print_r($address, 1));
$modx->log(xPDO::LOG_LEVEL_ERROR, print_r($id_user, 1));
return true;Чанк tpl.Favorite:<button id="[[+key]]" class="center">В избранное</button>Помогите, пожалуйста.P.S. Я понимаю, что есть готовые компоненты, но у меня совсем нет времени в них разбираться
Комментарии: 3
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
После того как поймаете клик по нужному товару — сформируйте ajax запрос на сайт.
Ловите запрос через плагин на событие onHandleRequest и далее уже средствами php как-нибудь запоминайте этот товар как избранный
Там нет никакой формы и вообще ничто никуда не отправится.
При этом сниппет addfavorites ведёт себя как хук для FormIt (хотя вполне себе можно без него, просто оперируя POST данными).
Следовательно вызов в таблице должен быть таким:
(чтобы не мешать синтаксис, ведь люди старались сделать всё изначально на Fenom)
Параметры fi.name и т.д. нужны, чтобы прокинуть данные в форму. См. modx.pro/components/3342
А чанк tpl.Favorite переделать хотя бы так:
Это, конечно, не отменяет множество проблем в коде автора.
Например строка $id_user = $modx->user->get('id'); будет работать только для авторизованных пользователей (для админа когда он проверяет). А на пользователях-гостях вполне себе будет падать.
Ну и какой-то странный формат HTML вёрстки с запятой и разными кавычками)
Мне немного страшно и интересно, как же будет выглядеть запрос, который положит данные в базу.
AjaxSnippet использовала, потому что хотела вызывать сниппет по нажатию на кнопку и увидела такое решение на форуме modx.ru/vopros-otvet/info/1883/ Видимо не так поняла)
Верстка тоже корявая, потому что глаз уже замылен.
Для вашего спокойствия могу сказать, что сайтом никто пользоваться не будет, лишь бы работало)
Еще раз спасибо!