Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework]parametry w defaultowym kontrolerze i akcji
Forum PHP.pl > Forum > PHP > Frameworki
agnieszkagdansk
Mam strone

localhost/moja_strona

co znaczy ze wywołany jest kontroler index z akcją index

Chciałabym przy zachowaniu tej zasady dodac paramery, czyli

localhost/moja_strona/paramert1/wartosc/parametr2/wartosc

jednak pokazuje mi sie komunikat "an error occured" nic wiecej nie pokazuje
domyslam sie ze ZF mysli ze parametr1 to nazwa kontrolera a wartosc1 to nazwa akcji
co zrobic oczywiscie chce uniknac wypisywania całej sciezki
localhost/moja_strona/index/index/paramert1/wartosc/parametr2/wartosc
Skyline
Czy masz ustawiony jakis routing?
agnieszkagdansk
nie mam
nexis
  1. <?php
  2. $p1 = $this->_getParam('parametr1', 'domyślna wartość');
  3. ?>
Sabistik
Tak jak napisano powyżej musisz dla routera dodać odpowiednią trasę w której zbudujesz odpowiedni url oraz na sztywno ustawisz odpowiedni kontroler oraz akcje.
http://framework.zend.com/manual/en/zend.c...ler.router.html

Co do wypowiedzi ~nexis to nie wiem zupełnie czego się tyczy, już nie wspominając o bezsensownej konstrukcji.
mazy
Cytat(nexis @ 21.07.2009, 11:49:17 ) *
  1. <?php
  2. $parametr1 = (is_null($this->_getParam('parametr1')) ? 'domyślna wartość' : $this->_getParam('parametr1');
  3. ?>


questionmark.gif

  1. <?php
  2. $parametr1 = $this->_getParam('parametr1', 'domyślna wartość');
  3. ?>


aby uzyskać taki efekt: localhost/moja_strona/paramert1/wartosc/parametr2/wartosc możesz zrobić:

  1. <?php
  2. $route = new Zend_Controller_Router_Route(
  3.    'parametr1/:var1/parametr2/:var2/',
  4.    array('module' => 'default',
  5.             'controller' => 'index',
  6.             'action' => 'index'));
  7.  
  8. $front->getRouter()->addRoute('default', $route);
  9. ?>
agnieszkagdansk
Zrobiłam tak jak podał w ostatniej odpowiedzi,
ale wyskakuje bład ze nieznana funkcja, get_router
oczywiscie załadowałam rozszerzenie routera, wiec nie wiem w czym mam problem
omeck
Może pokaż swój kod oraz kod błędu? Będzie można szybciej coś zdiagnozować.
agnieszkagdansk
  1. <?php
  2.  
  3.  
  4.  
  5. // Define path to application directory
  6. defined('APPLICATION_PATH')
  7.    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/application'));
  8.  
  9. // Define application environment
  10. defined('APPLICATION_ENV')
  11.    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
  12.  
  13. // Ensure library/ is on include_path
  14. set_include_path(implode(PATH_SEPARATOR, array(
  15.    realpath(APPLICATION_PATH . '/../library'),
  16.    realpath(APPLICATION_PATH . '/../application/admin/models'),
  17. )));
  18.  
  19. /** Zend_Application */
  20. require 'Zend/Application.php';
  21. require "Zend/Loader.php";
  22.  
  23. Zend_Loader::loadClass('Zend_Controller_Front');
  24. Zend_Loader::loadClass('Zend_Config_Ini');
  25. Zend_Loader::loadClass('Zend_Registry');
  26. Zend_Loader::loadClass('Zend_Controller_Router_Route');
  27. //Zend_Loader::loadClass('Zend_Db');
  28. //Zend_Loader::loadClass('Zend_Db_Table');
  29.  
  30.  
  31. // Create application, bootstrap, and run
  32. $application = new Zend_Application(
  33.    APPLICATION_ENV,
  34.    APPLICATION_PATH . '/configs/application.ini'
  35. );
  36.  
  37.  
  38. $config = new Zend_Config_Ini('./application/configs/config.ini', 'general');
  39. //$registry = Zend_Registry::getInstance();
  40. //$registry->set(â??configâ??, $config);
  41.  
  42. // setup database
  43. $db = Zend_Db::factory($config->db);
  44. Zend_Db_Table::setDefaultAdapter($db);
  45.  
  46.  
  47. $route = new Zend_Controller_Router_Route('parametr1/:var1/parametr2/:var2/',   array('module' => 'default', 'controller' => 'index',            'action' => 'index'));
  48. $application->getRouter()->addRoute('default', $route);
  49.  
  50.  
  51.  
  52.  
  53. $application->bootstrap()->run();
  54. ?>


dokładnie pokazuje taki bład
Cytat
Fatal error: Call to undefined method Zend_Application::getRouter() in C:\Program Files\WebServ\httpd\cms\index.php on line 49
mazy
bez sensu jest ten twoj kod, po co definiujesz Zend_Application skoro go nie uzywasz??

polecam przeczytać: Zend_Application

jeśli chcesz jednak aby ten twój kod zadzialal to proponuje:

  1. <?php
  2. $application->getBootstrap()->getResource('frontController')->getRouter()->addRoute('default', $route);
  3. ?>
agnieszkagdansk
nie pomogło ciagle pokazuje ten sam błąd
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.