login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[ZF]Verschillende styles

Offline juul - 14/10/2007 14:26 (laatste wijziging 14/10/2007 14:26)
Avatar van juulHTML interesse Oke ik ben nu al goed opgeschoten met het zend framework maar ik heb nog één probleempje ik wil dus dat mijn applicatie verschillende stijlen kan gebruiken dus dat mijn gebruikers zelf de stijl van de website kunnen kiezen en dat deze voor iedere gebruiker verschillend is.

Mijn probleem is hoe doe ik dit het efficiëntst, als iemand een nieuwe style maakt voor mijn applicatie dan zou hij volgens het MVC pattern voor elke module in de map views de template files moeten zetten maar is er geen manier om de volgende map structuur aan te nemen:

  1. ./application
  2. ./modules
  3. ./defaultmodule
  4. ./newsmodule
  5. ./views
  6. ./testStyle
  7. ./defaultmodule
  8. ./newsmodule


Iets dat op die mapstructuur lijkt zou ik dus willen hebben iemand enig idee hoe ik dit doe en als het niet gaat hoe ik iets dat daar op lijkt of toch handiger is als de standaard manier krijg?

8 antwoorden

Gesponsorde links
Offline Ibrahim - 14/10/2007 16:22
Avatar van Ibrahim PHP expert http://framewor...llers.html

misschien helpt deze pagina je wel verder 
Offline Stijn - 14/10/2007 16:55
Avatar van Stijn PHP expert Je kan ook de html code maken en de stijl helemaal laten bepalen door je CSS. Het is lang en moeilijk werk (http://www.gigastyle.be/ , een voorbeeld ervan: dat is dezelfde html maar andere css). Je moet dan niet met die views knoeien.
Offline juul - 15/10/2007 17:58
Avatar van juul HTML interesse Bedankt!

Ik heb wel nog een probleempje:
$this->view->addScriptPath('/styles/' . $config->template . '/headers');

Dat werkt niet aangezien ik $config binnen de class niet gedefinieerd heb maar hoe moet ik dat doen?
Offline Ibrahim - 15/10/2007 18:02
Avatar van Ibrahim PHP expert gebruik de Registry class (toch stijn?:p)
Offline Stijn - 15/10/2007 18:03
Avatar van Stijn PHP expert Zend_Registry Ik geloof dat dit het laatste puntje is van tutorial 5 van Zend Framework.

Je kan dan dit doen in je action:

  1. $config = Zend_Registry::getInstance()->get('config');
  2. $config->template;
Offline juul - 15/10/2007 19:17
Avatar van juul HTML interesse Ik heb nu dit:
  1. <?php
  2. class IndexController extends Zend_Controller_Action
  3. {
  4. public function init()
  5. {
  6. $this->initView();
  7. $this->view->addScriptPath('styles/' . Zend_Registry::get('template') . '/global/');
  8. }
  9.  
  10. public function indexAction()
  11. {
  12. try
  13. {
  14. $this->render('message');
  15. }
  16. catch (Exception $e)
  17. {
  18. echo $e->getMessage();
  19. }
  20. }
  21. }


Nu wil ik dus dat het bestand website/styles/default/global/message.phtml geladen wordt. Maar ik krijg deze exception:
Citaat:
script 'indexmessage.phtml' not found in path (stylesdefaultglobal)


Met andere woorden als ik mijn bestand nog één map "hoger" in de map index zet dan werkt het maar ik wil het bestand niet in die map index zetten, de url is gewoon "http://127.0.0.1/default/index/" (default module met de controller index waarvan je de code hierboven hebt).
Offline Stijn - 15/10/2007 19:33
Avatar van Stijn PHP expert Dan moet je geen $this->initView() gebruiken. initView is maar een lichtere versie van Zend_View (als je goed kijkt zie je dat enkel de interface wordt geladen als je die functie aanroept).

Ik raad aan om volgende in je index.php te plaatsen:

  1. Zend_Loader::loadClass('Zend_View');
  2.  
  3. //view aanmaken
  4. $view = new Zend_View();
  5. $view->setScriptPath('/path/to/scripts'); //geen slash op het einde.
  6.  
  7. //register view object
  8. $registry->set('view' , $view);


Bovenstaande code snap je wel hé, zorg ervoor dat je registry bestaat.

En dan kan je het volgende doen in je action code

  1. public function indexAction()
  2. {
  3. $view = Zend_Registry::getInstance()->get('view');
  4. $view->assign('blaat' , 'foo');
  5.  
  6. $view->render('viewScript.php');
  7. }


In de manual staat dat het View component apart enkel .php scripts rendert (misschien lukt dit ook met .phtml, je zal wel zien).
Offline juul - 15/10/2007 21:06
Avatar van juul HTML interesse Oke bedankt! Misschien is een algemeen ZF hulp topic iets voor deze site? Waar kleine vraagjes gesteld kunnen worden en na een tijdje heb je dan snel al een hele hoop documentatie bij elkaar...

Trouwens het is echo $view->render(); als iemand die de code gebruikt het niet zou zien ;)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.27s