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