Also if you've got models setup for taxes and prices etc, I would assume
there would be some relation with the Product model?
If not... to speed things up a little, I would write a few model functions
with some joined queries gathering all the data you need (i.e.
$this->Product->findTaxCode($product, $this->Auth->user('id')); )
Really think about how you can communicate with the models you need in the
most efficient and re-usable way possible.
On 1 March 2012 11:22, Stephen <[email protected]> wrote:
> 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
>
>
>
--
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