Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZendFramework]parametry w defaultowym kontrolerze i akcji
agnieszkagdansk
post
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 22.05.2009

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
Skyline
post
Post #2





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 25.07.2007

Ostrzeżenie: (0%)
-----


Czy masz ustawiony jakis routing?
Go to the top of the page
+Quote Post
agnieszkagdansk
post
Post #3





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 22.05.2009

Ostrzeżenie: (0%)
-----


nie mam
Go to the top of the page
+Quote Post
nexis
post
Post #4





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

Ostrzeżenie: (0%)
-----


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


Ten post edytował nexis 21.07.2009, 13:53:27


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
Sabistik
post
Post #5


Administrator wortalu


Grupa: Przyjaciele php.pl
Postów: 960
Pomógł: 39
Dołączył: 21.10.2003
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
mazy
post
Post #6





Grupa: Zarejestrowani
Postów: 69
Pomógł: 4
Dołączył: 12.03.2003
Skąd: Suwałki

Ostrzeżenie: (0%)
-----


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. ?>


Ten post edytował mazy 21.07.2009, 12:08:52
Go to the top of the page
+Quote Post
agnieszkagdansk
post
Post #7





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 22.05.2009

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
omeck
post
Post #8





Grupa: Zarejestrowani
Postów: 79
Pomógł: 7
Dołączył: 2.07.2005
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Może pokaż swój kod oraz kod błędu? Będzie można szybciej coś zdiagnozować.
Go to the top of the page
+Quote Post
agnieszkagdansk
post
Post #9





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 22.05.2009

Ostrzeżenie: (0%)
-----


  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
Go to the top of the page
+Quote Post
mazy
post
Post #10





Grupa: Zarejestrowani
Postów: 69
Pomógł: 4
Dołączył: 12.03.2003
Skąd: Suwałki

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
agnieszkagdansk
post
Post #11





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 22.05.2009

Ostrzeżenie: (0%)
-----


nie pomogło ciagle pokazuje ten sam błąd

Ten post edytował agnieszkagdansk 22.07.2009, 13:54:42
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 02:42