Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF] Problemy z front Controller
Forum PHP.pl > Forum > PHP > Frameworki
Robert1985
Witam.
Pytanie kieruję do osób dobrze zaznajomionych z ZF. Mam problem identyczny jaki niedawno pojawił się na forum
niestety problem ten nie został rozwiązany w konkretny sposób. Jestem w trakcie czytania książki "Zend Framework in Action"
robię wszystko tak jak jest w niej opisane ,ale:

Może najpierw definicje mojego virtualhosta:
  1. <VirtualHost *:80>
  2. DocumentRoot C:\Xampp\htdocs\moje\Public
  3. ServerName moje.local
  4. ServerAlias www.moje.local
  5. <Directory "C:\Xampp\htdocs\moje\Public">
  6. AllowOverride All
  7. </Directory>
  8. </VirtualHost>


Otóż po wpisaniu w adresie np.www.moje.local otrzymuję poprawny wynik czyli strona się wyświetla. Natomiast przy próbie
dostania się do konkretnej akcji lub kontrolera otrzymuję błąd 404. np.www.moje.local/index/index. Dla innych akcji jest tak samo.

Bootstrap index.php w Public:
  1. error_reporting(E_ALL|E_STRICT);
  2. ini_set('display_errors',true);
  3. date_default_timezone_set('Europe/London');
  4. $rootdir = dirname(dirname(__FILE__));
  5. set_include_path($rootdir.'/library' . PATH_SEPARATOR . get_include_path());
  6. require_once 'Zend/Loader.php';
  7. Zend_Loader::loadClass('Zend_Debug');
  8. Zend_Loader::loadClass('Zend_Controller_Front');
  9. $front = Zend_Controller_Front::getInstance();
  10. $front->throwExceptions(true);
  11. $front->setControllerDirectory('../application/Controllers');
  12. $front->setBaseUrl('/htdocs/moje/Public');
  13. $front->dispatch();


Index Controller:
  1. Zend_Loader::loadClass('Zend_View');
  2. class IndexController extends Zend_Controller_Action{
  3. public function indexAction(){
  4. $this->view->assign('title','Hello World!!!');
  5. }

.htaccess w Public:
  1. RewriteEngine on
  2. RewriteCond %{REQUEST_FILENAME} !-f
  3. RewriteRule .* index.php


Widoki znajdują się w poprawnej lokalizacji tzn. moje/application/views/scripts/nazwa_akcji.phtml
Wpis w etc Windowsa również jest umieszczony.

Proszę o pomoc nie potrafię znaleźć przyczyny takiego stanu rzeczy.
mrok
Zend in Action opisuje z tego co pamiętam wersję ZF 1.6. Do aktualnej 1.10 wprowadzono sporo zmian - polecam inne materialy np http://framework.zend.com/manual/en/learni...te-project.html albo cokolwiek znajdziesz w sieci ale na temat nowszej wersji.

Wracając do problemu to zapewne masz jakis ErrorController - wez wykomentuj znajdujący sie tam kod to powinieneś otrzymać wyjątek na ekranie (albo złap to co leci z $oFronController->dispatch()) i tam powinna być informacja co jest nie tak ze sciezkami.

I niech moc będzie z Tobą
Robert1985
Witam ponownie mądrzejszy o kolejną rzecz. Dla wszystkich ,których spotka podobny problem ,a jest ich dość trochę.
To nie wina wersji Frameworka wszystko powinno działać i działa z taką konfiguracją Virtualhosta w pliku httpd-vhost:
  1. <VirtualHost *:80>
  2. ServerName mój_alias.local
  3. DocumentRoot C:/xampp/htdocs/moje/public
  4. <Directory C:/xampp/htdocs/moje/public>
  5. DirectoryIndex index.php
  6. AllowOverride All
  7. Order allow,deny
  8. Allow from all
  9. </Directory>
  10. </VirtualHost>


Oraz przy pliku .htaccess:
  1. RewriteEngine on
  2. RewriteCond %{REQUEST_FILENAME} !-f
  3. RewriteRule .* index.php

Plik ten należy stworzyć w następujący sposób w systemie Windows:
W notatniku piszemy jego treść ,ale przy zapisywaniu jako nazwę wpisujemy .htaccess ,a w combobox zapisz jako zmieniamy "dokument tekstowy" na "wszystkie pliki".

Opisany sposób działa poprawnie dla wersji ZF 1.10.1 winksmiley.jpg. Przy pozostałych plikach wyglądających tak jak w poście powyżej.
Niech moc będzie z wami!
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.