Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
PALOMINO Гость цитировать
|
Добавлено: 21 Фев 2010 23:05:40 Заголовок сообщения: Реализация отображения корзины. |
|
|
Всем здрасьте.
Собственно проблема в следующем... Предположим, у нас есть и-нет магазин с корзиной. Товары добавляються в корзину, все работает. Все отлично. НО!
На страницах сайта необходимо отображать:
Корзина (N), где N -- кол-во товаров, которые в данный момент находятся в корзине.
Так вот ничего более умного чем, чем в AppController написать ф-цию, которая будет считать кол-во товаров в корзине и вызывать её каждый раз в ф-циях текущего контроллера, затем передавать результат работы ф-ции в VIEW, мне зделать/придумать не удалось.
Получается что в каждой ф-ции, каждого контроллера, надо вызывать эту ф-цию
Подскажите, кто сталкивался... Может есть более гуманные методы решения данной проблеммы? |
|
Вернуться к началу |
|
|
michas
цитировать
Зарегистрирован: 28 Янв 2008 11:28:31 Сообщения: 123
|
Добавлено: 22 Фев 2010 15:24:35 Заголовок сообщения: |
|
|
элементом сделайте _________________ Все самое интересное в реальном времени - xmpp:cakephp@conference.jabber.ru |
|
Вернуться к началу |
|
|
PALOMINO Гость цитировать
|
Добавлено: 22 Фев 2010 16:34:49 Заголовок сообщения: |
|
|
michas писал(а): | элементом сделайте |
Это не решает проблему полностью.
Щас сделал так:
Подсчет елементов в корзине, вынес в компонент "Cart". В каждом контроллере, вызываю:
Код: |
function beforeRender(){
if($this->action == "index" || $this->action == "add" || $this->action == "view")
$this->set('cart_count', $this->Cart->getCount());
}
|
Ну, и в каждом виде, присутствует элемент, который выводит кол-во.
Но меня по-прежнему не покидает чувство, что вся эта конструкция, работает через одно место и есть решение в разы проще. Воть. |
|
Вернуться к началу |
|
|
evilbloodydemon
цитировать
Зарегистрирован: 11 Окт 2007 20:32:19 Сообщения: 125
|
Добавлено: 22 Фев 2010 17:02:19 Заголовок сообщения: |
|
|
Код: | echo ClassRegistry::init('Cart')->getCount() |
в коде элемента _________________ поздняк метаться - ракеты в воздухе
jabber-конференция по CakePHP - xmpp:cakephp@conference.jabber.ru |
|
Вернуться к началу |
|
|
PALOMINO Гость цитировать
|
Добавлено: 22 Фев 2010 18:11:21 Заголовок сообщения: |
|
|
evilbloodydemon
Вот это, реально круто Взял на заметку.
ClassRegistry, насколько я понял, регистрирует именно модель. А корзина у меня модель то и не использует и БД тоже не использует. Только контроллер.
Вообщем, в предложенным вами варианте, выдается ошибка, что он не может найти соответствующуюю таблицу.
Вот еслиб была возможность из вида вызвать метод контроллера, а ещё лучше метод компонента, то былобы мегакруто. Есть такая возможность? |
|
Вернуться к началу |
|
|
michas
цитировать
Зарегистрирован: 28 Янв 2008 11:28:31 Сообщения: 123
|
Добавлено: 22 Фев 2010 19:49:04 Заголовок сообщения: |
|
|
echo ClassRegistry::init('Cart', 'Controller/Component')->getCount() _________________ Все самое интересное в реальном времени - xmpp:cakephp@conference.jabber.ru |
|
Вернуться к началу |
|
|
PALOMINO Гость цитировать
|
Добавлено: 23 Фев 2010 11:22:45 Заголовок сообщения: |
|
|
Всем биг спс за потраченное время.
Немного переделал:
Код: |
<?= ClassRegistry::init('CartComponent', 'Component')->getCount() ?>
|
И завелось
Но, почемуто (кстате почему?) отказался работать компонент Session, внутри компонента CartComponent
Вместо:
Код: |
$cart = $this->Session->read('Cart');
|
Пришлось олдскульно делать:
Код: |
$cart = $_SESSION['Cart'];
|
|
|
Вернуться к началу |
|
|
|