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 <
[email protected]> 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
> [email protected] 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
[email protected] For more options, visit this group at
http://groups.google.com/group/cake-php