Hi,
-- My first Cake project (and first major non-intranet web project!) is a fairly complex event management system for a month-long city-wide science festival my employer runs, involving about 120 events.
I have added the ability to add (and remove) events to a wishlist from a postLink, which works well on the event view page, but is annoying for users when clicking the 'Add to wishlist' link in the events listings page, as the page refreshes and they may have to scroll down to continue browsing where they left off.
I've been messing about with PHP for years, but have little Javascript experience and nothing AJAX-based. Time is getting tight, so I'm wondering if there is anyone who can help me achieve this? Thanks!
This is the code I use in my view:
if ($wishlisted == NULL){
echo $this->Form->postLink('Add to wishlist', array('action' => 'wishadd', $event['Event']['id']));
} else {
echo "On your wishlist " . $this->Form->postLink('Remove', array('action' => 'wishlistremove', $wishlisted));
}
This is my Controller code:
public function wishadd($id) { if ($this->request->is('get')) { throw new MethodNotAllowedException(); } $user_id = $this->Auth->user('id'); if ($user_id == NULL) { $this->Session->setFlash('You must be logged in to add an event to a wishlist!'); return $this->redirect(array('action' => 'view',$id)); } $currentYear = $this->getSettings('year'); $event = $this->Event->findById($id); $conditions = array('Wishlist.year' => $currentYear,'Wishlist.event_id' => $id,'Wishlist.user_id' => $this->Auth->user('id')); $wishlisted = $this->Event->Wishlist->find('count',array('conditions' => $conditions)); if ($wishlisted > 0) { $this->Session->setFlash('This event is already on your wishlist.'); return $this->redirect($this->referer()); } if ($this->request->is('post')) { $this->Event->Wishlist->create(); $wishlist_id = $this->Event->Wishlist->getInsertID(); $this->Event->Wishlist->saveField('year', $currentYear); $this->Event->Wishlist->saveField('event_id', $id); $this->Event->Wishlist->saveField('proposal_id', $event['Event']['proposal_id']); $this->Event->Wishlist->saveField('user_id', $user_id); $this->Session->setFlash('This event has been added to your wishlist.'); return $this->redirect($this->referer()); } else { $this->Session->setFlash('Unable to add to your wishlist. Please try again.'); return $this->redirect($this->referer()); } }
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP
---
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cake-php+unsubscribe@googlegroups.com.
To post to this group, send email to cake-php@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment