| Предыдущая тема :: Следующая тема | 
	
	
		| Автор | Сообщение | 
	
		| 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'];
 
 | 
 |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
	
	
	
		|  |