Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kontroler - autoload akcji default
Forum PHP.pl > Forum > PHP
primo
Witam,

mam sobie kontroler, który po otrzymaniu adresu $_GET np. action=newslist - coś tam wczytuje z bazy, jednakże ja go includuję do pliku index.php i nie dostaje on argumentu do wykonania. Co mam zrobić, aby domyślną akcją jaką on wczyta będzie default.action.php
Oto kod kontrolera:

  1. <?php
  2. require_once('index.conf.php');
  3. require_once('lib/core/ModelAndView.class.php');
  4. try{
  5. $action_to_run = $_GET['action'];
  6. if ($action_to_run != ''){
  7. $action_file_name = DIR_ACTIONS.'/'.$action_to_run.'.action.php';
  8. if (file_exists($action_file_name)){ 
  9. require_once($action_file_name);
  10. $actionclassname = $action_to_run.'action';
  11. $actioncontroller = new $actionclassname();
  12. $mv = $actioncontroller->processRequest();  
  13. if($mv!=null){
  14. require_once(SMARTY_DIR_LIB.'/Smarty.class.php');
  15. $smarty = new Smarty();
  16. $smarty->tempalte_dir = SMARTY_DIR_TEMPALTES;
  17. $smarty->compile_dir = SMARTY_DIR_TEMPALTES_C;
  18. //$smarty->debugging  = SMARTY_DEBUG;
  19. $smarty->assign($mv->getModel());
  20. $smarty->display($mv->getView());
  21. }
  22. }
  23. else{
  24. throw new Exception("Brak pliku akcji '$action_file_name' 
  25.  do uruchomienia!"); 
  26. }
  27. }
  28. else{
  29. throw new Exception("Brak akcji do uruchomienia!");
  30. }
  31. }
  32. catch (Exception $e){
  33. print_r($e);
  34. }
  35. ?>
Balon
to zrob dwa dodatkowe warunki, przy sprawdzaniu czy plik istnieje zrob else i tam default i elseif przy $action to run jest nieustawione (!isset($action_to_run) ;]
primo
cały try->catch mam zamknąć w dodatkowym warunku questionmark.gif - nie za bardzo wiem o co Ci chodzi.
Prph
Przepraszam, ze sie wtracam, ale jak dla mnie troche chaotyczny ten kod. Chyba czerpales inspiracje z artu z php solution.

Ja mam klase front kontrolera. Jest glowny fragment:

  1. <?php
  2.  
  3. try
  4. {
  5. do
  6. {
  7. $this->_loadConfig($sActionName);
  8.  
  9. $oAuth->checkAuth($sActionName);
  10.  
  11. $oAction = $this->_prepareAction($sActionName, $aParametersForAction);
  12.  
  13. $mResult = $oAction->run();
  14.  
  15. if(Registry::doesEntryExist($sActionName, 'next-action'))
  16. {
  17. $sActionName = Registry::getEntry($sActionName, 'next-action');
  18. $bContinueChain = true;
  19.  
  20. if(Registry::doesEntryExist($sActionName, 'pass-parameters'))
  21. $aParametersForAction = $mResult;
  22. }
  23. else
  24. $bContinueChain = false;
  25. }
  26. while($mResult && $bContinueChain);
  27. }
  28. catch(Exception $oException)
  29. {
  30. throw $oException;
  31. }
  32. }
  33.  
  34. ?>


oczywiscie, wymaga jeszcze wielu poprawek, ale to wyjdzie w testach smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.