Re: How to make a good use of Elements and DRY principe ?
Some interesting ideas posted here if you're interested. http://groups.google.com/group/cake-php/browse_thread/thread/817ee534229950e4/6e72ee4585eb042a?lnk=raot&hl=en#6e72ee4585eb042a Cheers, Adam On Aug 19, 1:55 am, "Christophe C." <[EMAIL PROTECTED]> wrote: > Ok thanks to both of you i'll try to setup something and post the > results here. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups "Cake PHP" group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~--~~~~--~~--~--~---
Re: How to make a good use of Elements and DRY principe ?
Ok thanks to both of you i'll try to setup something and post the results here. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups "Cake PHP" group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~--~~~~--~~--~--~---
Re: How to make a good use of Elements and DRY principe ?
Hi Gremlin, What you said is all correct, etc, however there is still the issue of creating a view and element for every ajax method, which is kinda what Christophe was getting at by wanting to call $this->renderElement() from the controller. This is also something that kinda annoyed me, however you could solve this problem by adding a clever beforeFilter method to your controller, which would set the view to an "element view", and set layout to ajax, etc, automatically taking the action name and passing it to the view which would load an element by that name. Something to think about - I might try this in the future. Adam On Aug 18, 6:48 am, gremlin <[EMAIL PROTECTED]> wrote: > Somehow lost some of the post. > > Also in views that dont have a $users variable set you can use the > element $this->renderElement( 'users_list' ); > Using ajax to return html snippets would work as well. - jquery style > - $( '#element' ).load( Url/users/index ); would load the cached > element into the #element. > > Remember you need to play with the RequestHandler component and either > extension parsing or request handling code to serve the ajax view in a > blank layout. > > Again have fun with this stuff. Let us know what you come up with. > > On Aug 17, 1:41 pm, gremlin <[EMAIL PROTECTED]> wrote: > > > What you need to do is write an index action for your users_controller > > like you would if you were NOT using ajax or reusing that action at > > all. > > Once you have that done, modify that function to check isset( > > $this->params['requested'] ) to see if the view action if being called via > > > the requestAction function. > > > *** > > > function index( ) > > $users = $this->User->findAll( ); > > if( isset( $this->params['requested'] ) ){ > > return $users; > > } > > $this->set( 'users', $users ); > > > } > > > Then you create an element - users_list.ctp > > > if( !isset( $_data ) ) { > >$_data = $this->requestAction( array( 'controller' => 'users', > > 'action' => 'index' ) );} > > > > > foreach( $_data as $row _) { > > echo use data} > > > > > > You can then use the element in your users_controller index view file. > > $this->renderElement( 'users_list', array( '_data' => $users ); > > > For a good write up check out the bakery > > articles..http://bakery.cakephp.org/articles/view/creating-reusable-elements-wi.. > > > This will show you how to create these reusable elements as well as > > how to cache them based on the freshness of the model data, timestamps > > and on a per user / instance basis > > > Enjoy. > > > and in other view without the $users data $this->renderElement( > > 'users_list' ); > > > On Aug 16, 2:42 pm, "Christophe C." <[EMAIL PROTECTED]> wrote: > > > > up :( > > > Any suggestions ? --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups "Cake PHP" group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~--~~~~--~~--~--~---
Re: How to make a good use of Elements and DRY principe ?
Somehow lost some of the post. Also in views that dont have a $users variable set you can use the element $this->renderElement( 'users_list' ); Using ajax to return html snippets would work as well. - jquery style - $( '#element' ).load( Url/users/index ); would load the cached element into the #element. Remember you need to play with the RequestHandler component and either extension parsing or request handling code to serve the ajax view in a blank layout. Again have fun with this stuff. Let us know what you come up with. On Aug 17, 1:41 pm, gremlin <[EMAIL PROTECTED]> wrote: > What you need to do is write an index action for your users_controller > like you would if you were NOT using ajax or reusing that action at > all. > Once you have that done, modify that function to check isset( > $this->params['requested'] ) to see if the view action if being called via > > the requestAction function. > > *** > > function index( ) > $users = $this->User->findAll( ); > if( isset( $this->params['requested'] ) ){ > return $users; > } > $this->set( 'users', $users ); > > } > > Then you create an element - users_list.ctp > > if( !isset( $_data ) ) { >$_data = $this->requestAction( array( 'controller' => 'users', > 'action' => 'index' ) );} > > > foreach( $_data as $row _) { > echo use data} > > > > You can then use the element in your users_controller index view file. > $this->renderElement( 'users_list', array( '_data' => $users ); > > For a good write up check out the bakery > articles..http://bakery.cakephp.org/articles/view/creating-reusable-elements-wi...http://bakery.cakephp.org/articles/view/cache-elements-individually-f...http://bakery.cakephp.org/articles/view/optimizing-your-cakephp-eleme... > > This will show you how to create these reusable elements as well as > how to cache them based on the freshness of the model data, timestamps > and on a per user / instance basis > > Enjoy. > > and in other view without the $users data $this->renderElement( 'users_list' > ); > > On Aug 16, 2:42 pm, "Christophe C." <[EMAIL PROTECTED]> wrote: > > > up :( > > Any suggestions ? --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups "Cake PHP" group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~--~~~~--~~--~--~---
Re: How to make a good use of Elements and DRY principe ?
What you need to do is write an index action for your users_controller like you would if you were NOT using ajax or reusing that action at all. Once you have that done, modify that function to check isset( $this- >params['requested'] ) to see if the view action if being called via the requestAction function. *** function index( ) $users = $this->User->findAll( ); if( isset( $this->params['requested'] ) ){ return $users; } $this->set( 'users', $users ); } Then you create an element - users_list.ctp if( !isset( $_data ) ) { $_data = $this->requestAction( array( 'controller' => 'users', 'action' => 'index' ) ); } foreach( $_data as $row _) { echo use data } You can then use the element in your users_controller index view file. $this->renderElement( 'users_list', array( '_data' => $users ); For a good write up check out the bakery articles.. http://bakery.cakephp.org/articles/view/creating-reusable-elements-with-requestaction http://bakery.cakephp.org/articles/view/cache-elements-individually-for-each-user http://bakery.cakephp.org/articles/view/optimizing-your-cakephp-elements-and-views-with-caching This will show you how to create these reusable elements as well as how to cache them based on the freshness of the model data, timestamps and on a per user / instance basis Enjoy. and in other view without the $users data $this- >renderElement( 'users_list' ); On Aug 16, 2:42 pm, "Christophe C." <[EMAIL PROTECTED]> wrote: > up :( > Any suggestions ? --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups "Cake PHP" group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~--~~~~--~~--~--~---
Re: How to make a good use of Elements and DRY principe ?
up :( Any suggestions ? --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups "Cake PHP" group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~--~~~~--~~--~--~---
How to make a good use of Elements and DRY principe ?
Hello, After reading the manual and other search results, i still didnt find the way to make a good use of Elements when using Ajax. Let's say i have a model "User" and in my controller, a method called "index" that list my registered users. Since I'll re-use this user list in my application, i decided to put it in a Element called "_user_list.ctp". So from my views/users/index.ctp, i just have to use $this- >renderElement('_user_list', $users) and it works fine ! Now, i want to use Ajax to get that list rendered (I'm using Prototype library for Ajax calls) into an element (div or table ..), but i can't render an Element (views/elements/users/_user_list.ctp in this case) directly from a controller. So currently, i'm using a file in my view directory ( views/users/ user_list.ctp ) that is able call an Element ( views/elements/users/ _user_list.ctp ) and in my user controller, i'm using : this- >render('user_list'); Is there any way to do it better than this ? I don't think i'm doing it right ! ^^ A solution is that we should to be able to call renderElement() from controllers. function index(){ ... if($this->RequestHandler->isAjax()){ $this->renderElement('users/_user_list'); // with autoLayout set to false automatically } } --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups "Cake PHP" group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~--~~~~--~~--~--~---