Why break the MVC system by creating a component where it isn't needed?
Your cart functionality is 100% directly related to your Product model,
place a method in that controller, just create a custom route if you want
to change the URL.

If you want to access the cart information from views, elements, layouts -
other controllers etc, use requestAction (See my example)

http://pastie.org/private/9etnv6mjbfozscvgpdq

Hope this helps.
 Cheers

On 29 February 2012 15:37, jeremyharris <[email protected]> wrote:

> I would simply create a component called Cart and add a read() method to
> just pull the products. Something like this:
>
> class CartComponent extends Object {
> var $components = array('Session');
>  function read() {
>  $Product = ClassRegistry::init('Product');
> $productsInCart = $this->Session->read('Cart');
>  $cart = array();
> foreach ($productsInCart as $product) {
> $cart[] = $Product->read(null, $product);
>  }
> return $cart;
> }
>  function save($id) {
> $productsInCart = $this->Session->read('Cart');
> $productsInCart[] = $id;
>  return $this->Session->save('Cart', $productsInCart);
> }
> }
>
> Then you access it from the controller and you're good to go. Technically
> it's not MVC since the Cart should be a model, but do you really want to
> write a datasource to pull/save to the Session just for something simple
> like this? I mean, since there will only ever be *one* cart record (from
> the eyes of the user) it doesn't seem to make sense to go to all the
> trouble. Breaking MVC patterns is okay every once in a while :) This
> component would be easily testable and separate from your controller.
>
> On Tuesday, February 28, 2012 1:06:27 PM UTC-8, Christian wrote:
>>
>> Hi,
>>
>> I'm currently trying to create a shopping cart solution with cake 1.3.
>> In the current design, only the product id of a chosen product will be
>> saved in the session, each time the customer lists the cart items, all
>> information needs to be read out of the database.
>> My idea was to create a seperated model (no relation to any table)
>> where all cart calculations can happen in, which can then be used in
>> several controllers. However, this would mean that this cart class
>> would need to use several other product related models (product
>> details, taxes, countrydetails, etc.), which is not easily supported
>> by cake, since it breaks the MVC model.
>> The workaround would be to implement the logic in a controller where I
>> can easily access all models, however, this breaks two other basics,
>> once the "fat model skinny controller" rule and on the other hand the
>> code is not easily reusable for other purposes.
>>
>> My question is now how where to implement the cart functionality (e.g.
>> summary price, discount, taxes calculation, etc.) without breaking MVC
>> but with sticking to "fat model skinny controller" and the re-
>> usability of my code.
>>
>> Thanks,
>> Christian
>
>
> On Tuesday, February 28, 2012 1:06:27 PM UTC-8, Christian wrote:
>>
>> Hi,
>>
>> I'm currently trying to create a shopping cart solution with cake 1.3.
>> In the current design, only the product id of a chosen product will be
>> saved in the session, each time the customer lists the cart items, all
>> information needs to be read out of the database.
>> My idea was to create a seperated model (no relation to any table)
>> where all cart calculations can happen in, which can then be used in
>> several controllers. However, this would mean that this cart class
>> would need to use several other product related models (product
>> details, taxes, countrydetails, etc.), which is not easily supported
>> by cake, since it breaks the MVC model.
>> The workaround would be to implement the logic in a controller where I
>> can easily access all models, however, this breaks two other basics,
>> once the "fat model skinny controller" rule and on the other hand the
>> code is not easily reusable for other purposes.
>>
>> My question is now how where to implement the cart functionality (e.g.
>> summary price, discount, taxes calculation, etc.) without breaking MVC
>> but with sticking to "fat model skinny controller" and the re-
>> usability of my code.
>>
>> Thanks,
>> Christian
>
>
> On Tuesday, February 28, 2012 1:06:27 PM UTC-8, Christian wrote:
>>
>> Hi,
>>
>> I'm currently trying to create a shopping cart solution with cake 1.3.
>> In the current design, only the product id of a chosen product will be
>> saved in the session, each time the customer lists the cart items, all
>> information needs to be read out of the database.
>> My idea was to create a seperated model (no relation to any table)
>> where all cart calculations can happen in, which can then be used in
>> several controllers. However, this would mean that this cart class
>> would need to use several other product related models (product
>> details, taxes, countrydetails, etc.), which is not easily supported
>> by cake, since it breaks the MVC model.
>> The workaround would be to implement the logic in a controller where I
>> can easily access all models, however, this breaks two other basics,
>> once the "fat model skinny controller" rule and on the other hand the
>> code is not easily reusable for other purposes.
>>
>> My question is now how where to implement the cart functionality (e.g.
>> summary price, discount, taxes calculation, etc.) without breaking MVC
>> but with sticking to "fat model skinny controller" and the re-
>> usability of my code.
>>
>> Thanks,
>> Christian
>
>  --
> Our newest site for the community: CakePHP Video Tutorials
> http://tv.cakephp.org
> Check out the new CakePHP Questions site http://ask.cakephp.org and help
> others with their CakePHP related questions.
>
>
> To unsubscribe from this group, send email to
> [email protected] For more options, visit this group
> at http://groups.google.com/group/cake-php
>



-- 
Kind Regards
 Stephen

 http://www.ninjacodermonkey.co.uk

-- 
Our newest site for the community: CakePHP Video Tutorials 
http://tv.cakephp.org 
Check out the new CakePHP Questions site http://ask.cakephp.org and help others 
with their CakePHP related questions.


To unsubscribe from this group, send email to
[email protected] For more options, visit this group at 
http://groups.google.com/group/cake-php

Reply via email to