Список форумов Cake-PHP.ru Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
 
 Watched TopicsWatched Topics   FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Реализация отображения корзины.

 
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий
Предыдущая тема :: Следующая тема  
Автор Сообщение
PALOMINO
Гость
цитировать






СообщениеДобавлено: 21 Фев 2010 23:05:40    Заголовок сообщения: Реализация отображения корзины. Ответить с цитатой Изменить/удалить это сообщение

Всем здрасьте.
Собственно проблема в следующем... Предположим, у нас есть и-нет магазин с корзиной. Товары добавляються в корзину, все работает. Все отлично. НО!

На страницах сайта необходимо отображать:
Корзина (N), где N -- кол-во товаров, которые в данный момент находятся в корзине.

Так вот ничего более умного чем, чем в AppController написать ф-цию, которая будет считать кол-во товаров в корзине и вызывать её каждый раз в ф-циях текущего контроллера, затем передавать результат работы ф-ции в VIEW, мне зделать/придумать не удалось.

Получается что в каждой ф-ции, каждого контроллера, надо вызывать эту ф-цию Sad

Подскажите, кто сталкивался... Может есть более гуманные методы решения данной проблеммы?
Вернуться к началу
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
Вот это, реально круто Wink Взял на заметку.
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() ?>


И завелось Cool
Но, почемуто (кстате почему?) отказался работать компонент Session, внутри компонента CartComponent
Вместо:
Код:

$cart = $this->Session->read('Cart');

Пришлось олдскульно делать:
Код:

$cart = $_SESSION['Cart'];
Вернуться к началу
Имя
Сообщение

Смайлики
Very Happy Smile Sad Surprised
Shocked Confused Cool Laughing
Mad Razz Embarassed Crying or Very sad
Evil or Very Mad Twisted Evil Rolling Eyes Wink
Exclamation Question Idea Arrow
Дополнительные смайлики

 
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы можете редактировать свои сообщения
Вы можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB

Рейтинг@Mail.ru