Empfehlungen: Erweiterte Suche

Werte aus dem Controller dem Layout übergeben

Daten auslesen, verarbeiten und den Views übergeben

Werte aus dem Controller dem Layout übergeben

Beitragvon aioon » Di 14. Jul 2009, 10:00

Olah,

ich habe ein default.ctp möchte diesem nun Werte aus jeweiligen Controller z.B. users übergeben!

denn ich habe eine navigation im default:

Code: Alles auswählen
        <li id="first" class="active"><?php echo $html->link(__('Anfragen', true), array('controller'=> 'requests', 'action'=>'index')); ?></li>
        <li><?php echo $html->link(__('Kunden', true), array('controller'=> 'clients', 'action'=>'index')); ?></li>
        <li><?php echo $html->link(__('Mitarbeiter', true), array('controller'=> 'employees', 'action'=>'index')); ?></li>
        <li><?php echo $html->link(__('Benutzer', true), array('controller'=> 'users', 'action'=>'index')); ?></li>    
        <li><?php echo $html->link(__('Status', true), array('controller'=> 'statuses', 'action'=>'index')); ?></li>
        <li><?php echo $html->link(__('Prioritäten', true), array('controller'=> 'priorities', 'action'=>'index')); ?></li>
        <li><?php echo $html->link(__('Anfragetypen', true), array('controller'=> 'request_types', 'action'=>'index')); ?></li>
        <li><?php echo $html->link(__('Nachrichten', true), array('controller'=> 'messages', 'action'=>'index')); ?></li>

nun möchte ich über die controller, das aktuelle menü hervorheben! wenn man sich auf requests befindet, wird es durch die ergänzung im li tag mit id="first" class="active" ergänzt.

würde man sich jetzt im bereich users befinden, würde sich die ergänzung im li tag bei den Benutzer navigation ergänzen.

Code: Alles auswählen
        <li><?php echo $html->link(__('Anfragen', true), array('controller'=> 'requests', 'action'=>'index')); ?></li>
        <li><?php echo $html->link(__('Kunden', true), array('controller'=> 'clients', 'action'=>'index')); ?></li>
        <li><?php echo $html->link(__('Mitarbeiter', true), array('controller'=> 'employees', 'action'=>'index')); ?></li>
        <li id="first" class="active"><?php echo $html->link(__('Benutzer', true), array('controller'=> 'users', 'action'=>'index')); ?></li>      
        <li><?php echo $html->link(__('Status', true), array('controller'=> 'statuses', 'action'=>'index')); ?></li>
        <li><?php echo $html->link(__('Prioritäten', true), array('controller'=> 'priorities', 'action'=>'index')); ?></li>
        <li><?php echo $html->link(__('Anfragetypen', true), array('controller'=> 'request_types', 'action'=>'index')); ?></li>
        <li><?php echo $html->link(__('Nachrichten', true), array('controller'=> 'messages', 'action'=>'index')); ?></li>


gibt es da irgend eine nette möglichkeit von cakephp aus die mir das realisieren könnte?
aioon
 
Beiträge: 39
Registriert: So 12. Jul 2009, 18:14

Re: Werte aus dem Controller dem Layout übergeben

Beitragvon Jörg » Di 14. Jul 2009, 12:23

Moin,
schaue dir mal das "Startup-Kit -> dynamische Navigation mit CakePHP" von Alex (Alex) an.

CakePHP - dynamische Navigation (Starter-Kit)

Gruß
Jörg
Jörg
 
Beiträge: 105
Registriert: Di 13. Mai 2008, 13:45
Wohnort: Bremen
CakePHP-Version: 2.0.3, 1.3.x
OS: Win7/Ubuntu

Re: Werte aus dem Controller dem Layout übergeben

Beitragvon aioon » Di 14. Jul 2009, 14:28

Ich hätte schon gerne was eigenes und will keine Datenbank dafür einrichten...

Code: Alles auswählen
<?php

$navitem = array('requests' => '',
                 'clients' => '',
                 'employees' => '',
                 'users' => '',
                 'statuses' => '',
                 'priorities' => '',
                 'requesttypes' => '',
                 'messages' => '');

$navitem[low($this->name)] = ' class="active"';

?>

<div id="menu">

    <ul>

        <!--
                Each list item below represents a tab in the menu. Set the class
                of any list item to 'active' to make it, well, active.
        -->

        <li<?=$navitem['requests']?>><?php echo $html->link(__('Anfragen', true), array('controller'=> 'requests', 'action'=>'index')); ?></li>
        <li<?=$navitem['clients']?>><?php echo $html->link(__('Kunden', true), array('controller'=> 'clients', 'action'=>'index')); ?></li>
        <li<?=$navitem['employees']?>><?php echo $html->link(__('Mitarbeiter', true), array('controller'=> 'employees', 'action'=>'index')); ?></li>
        <li<?=$navitem['users']?>><?php echo $html->link(__('Benutzer', true), array('controller'=> 'users', 'action'=>'index')); ?></li>      
        <li<?=$navitem['statuses']?>><?php echo $html->link(__('Status', true), array('controller'=> 'statuses', 'action'=>'index')); ?></li>
        <li<?=$navitem['priorities']?>><?php echo $html->link(__('Prioritäten', true), array('controller'=> 'priorities', 'action'=>'index')); ?></li>
        <li<?=$navitem['requesttypes']?>><?php echo $html->link(__('Anfragetypen', true), array('controller'=> 'request_types', 'action'=>'index')); ?></li>
        <li<?=$navitem['messages']?>><?php echo $html->link(__('Nachrichten', true), array('controller'=> 'messages', 'action'=>'index')); ?></li>
    </ul>

    <div></div>

</div>


was ist mit dieser lösung? es funktioniert zwar wunderbar, aber ich denke ich missbrauche cakephp, denn sowas macht man bestimmt anders und sauberer... oder?

Gruß
Alex
aioon
 
Beiträge: 39
Registriert: So 12. Jul 2009, 18:14

Re: Werte aus dem Controller dem Layout übergeben

Beitragvon Jörg » Di 14. Jul 2009, 17:51

Hey Alex,
wenn du keine Datenbank verwenden willst, warum auch immer, dann schreibe dir ein mehrdimensionales Array mit den gesamten Daten.

Falls du dich doch noch für eine Datenbank entscheidest, kannst du deine Navigation auch mit dem Cache-System von CakePHP wunderbar zwischenspeichern. Somit ersparst du dir je nach Caching-Dauer die mySQL-Querys.

Danach durchläufst du diesen mit einer foreach()-Schleife und wertest die Values aus.
Wenn dann z.B. $this->name == deinem Key im mehrdimensionalen Navigation-Array entspricht, dann setzte die CSS-Klasse auf z.B. "class='active'".

$this->name entspricht deinem Controller-Namen. Du kannst dir den aktuellen Controller auch über die $this->params holen.

Gruß
Jörg
Jörg
 
Beiträge: 105
Registriert: Di 13. Mai 2008, 13:45
Wohnort: Bremen
CakePHP-Version: 2.0.3, 1.3.x
OS: Win7/Ubuntu


Zurück zu Controller

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron