Well, using requestAction is only recommended in combination with caching. So using the cached element with requestAction inside the element is the way to go in my oppinion.

The other possibility is loading the Language Model in AppController, setting the languages var in AppController::beforeFilter() and passing the var into the cached element.

Kind regards
Thomas

Am 16.09.2011 11:56, schrieb Teddy Zeenny:
1. *Create controller and model:*

    The controller and model to use depend on the table the languages
    are stored in.  For example if the languages are in a table called
    "languages", then create a model named Language and a controller
    named LanguagesController.

2. *Create an action that returns the list of languages *

    In LanguagesController, create an action called getLanguages for
    example.
    Basically what it does is query the languages table (
    $results=$this->Language->find('all');  )
    and then it returns the result (  return $results;   )


3.*Create an element (for example call it language_list.ctp)*

    First retrieve the information using requestAction
    (for example:
    $languages=$this->requestAction('languages/getLanguages')  )
    Then create the html needed for the languages
    (for example: foreach($languages as $language){  //html here }


4.*Call the element from the default.ctp layout*
**echo $this->element('language_list');
Now usually I wouldn't use requestAction as it would hit my performance, but since the list of languages is part of the layout, I think it would be the safest way to go. In order to fix the performance costs of requestAction, I would recommend the use of caching (especially that these languages will probably not change very often)
You can for example cache the element i.e:

you can can add a parameter to the element call from default.ctp:

echo $this->element('language_list',array('cache'=>array('time'=>'+1 week','key'=>'languages')));

That is how I would do it. I'm sure there are other (and maybe better) solutions, but this would definitely work.


On Fri, Sep 16, 2011 at 12:32 PM, heohni <heidi.anselstet...@consultingteam.de <mailto:heidi.anselstet...@consultingteam.de>> wrote:

    Hi,

    I have a section in my web project where I have to load from the
    database the possible languages and their infos like flag image name,
    ID, shortcut, etc.

    Within my templates I have in the default.ctp this area:
    <div id="flags">
    <?php echo $html->link($html->image('en.png', array('class' =>
    'map_icon')), array('controller' => 'lng/eng'), array('title' =>
    'English', 'escape' => false));?>
    ...
    ...
    ...
    </div>

    This way I have it hard coded, but as said I want to have it
    dynamically.
    I wonder how I can do this?

    Do I have to use elements for this? Where do I have to place all my
    database queries? In which controller?
    Within the pages_controller? And how to get the database results into
    the element template?

    Please help me out, I am kind of lost right now...

    Thanks!

    --
    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
    cake-php+unsubscr...@googlegroups.com
    <mailto:cake-php%2bunsubscr...@googlegroups.com> For more options,
    visit this group at http://groups.google.com/group/cake-php


--
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
cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php

--
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
cake-php+unsubscr...@googlegroups.com For more options, visit this group at 
http://groups.google.com/group/cake-php

Reply via email to