Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZF] Baseurl
kasztan165
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 18.07.2007

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


Witam,

Chciałem się dowiedzieć jak ustawić w tworzonej aplikacji na ZF baseurla. W tej chwili mój baseurl jest taki:
Cytat
/zf-test

a chciałbym aby był to pełny adres, czyli:
Cytat

Czy jest możliwość ustawienia tego za pomocą helpera, czy innym rozwiązaniem jest utworzenie stałej??

Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
singles
post
Post #2





Grupa: Zarejestrowani
Postów: 121
Pomógł: 26
Dołączył: 2.07.2007

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


Obadałem problem. Robisz dobrze, ale u mnie jak zrobię tak samo jak Ty to Zend szaleje (przez nazwę hosta na początku), ACL się wysypuje, bo Request źle zwraca nazwę kontrolera i akcji itd.

Sposób jaki wymyśliłem, aby to obejść - napisałem własny router (kto wie, może mi się kiedyś przyda), który pomaga Zendowi w ogarnięciu co jest czym w linku:
  1. class My_Router extends Zend_Controller_Router_Rewrite
  2. {
  3. public function route(Zend_Controller_Request_Abstract $request)
  4. {
  5. parent::route($request);
  6.  
  7. $host = (isset($_SERVER['HTTPS']) ? 'https://' : 'http://') . $_SERVER['SERVER_NAME'];
  8. $baseUrlParts = explode('/', str_replace($host, '', $request->getBaseUrl()));
  9. $pathParts = explode('/', $_SERVER['REQUEST_URI']);
  10.  
  11. $controllerAndAction = array_merge(array_diff($pathParts, $baseUrlParts));
  12.  
  13. if (!isset($controllerAndAction[0])) {
  14. $controllerAndAction[0] = $this->getRoute('default')->getDefault('controller');
  15. }
  16. if (!isset($controllerAndAction[1])) {
  17. $controllerAndAction[1] = $this->getRoute('default')->getDefault('action');
  18. }
  19. $request->setControllerName($controllerAndAction[0]);
  20. $request->setActionName($controllerAndAction[1]);
  21. }
  22. }


A w Bootstrapie mam coś takiego:
  1. protected function _initBaseUrlAndRoutes()
  2. {
  3. /**
  4.   * @var Zend_Controller_Front
  5.   */
  6. $front = $this->bootstrap('frontcontroller')->getResource('frontcontroller');
  7. $front->setBaseUrl('http://localhost/projekt/public/'); //albo "mojhost/zf/"
  8. $front->setRouter(new My_Router());
  9. }


U mnie działa - helper baseUrl zwraca pełną ścieżkę, a i na ACLu się nie wysypuje.

Teoretycznie powinno się dać zrobić to także za pomocą mod_rewrite - ustawić RewriteBase, ale nie znam się na tyle na mod_rewrite, żeby się wypowiadać.

Ten post edytował singles 26.01.2011, 13:11:45
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 16.10.2025 - 08:39