Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Zend][PHP]Problem z kontrolerem w Zendzie
Forum PHP.pl > Forum > Przedszkole
bastard13
Witam.
Mam nastepujący problem:
Mam pliki:
public\index.php:
  1. <?php
  2. error_reporting(E_ALL|E_STRICT);
  3. date_default_timezone_set('Europe/London');
  4. set_include_path('.' . PATH_SEPARATOR . '../../library'
  5. . PATH_SEPARATOR . '../application/models/'
  6. . PATH_SEPARATOR . get_include_path());
  7.  
  8. require_once "Zend/Loader/Autoloader.php";
  9. $autoloader = Zend_Loader_Autoloader::getInstance();
  10. $autoloader->setFallbackAutoloader(true);
  11.  
  12. $frontController = Zend_Controller_Front::getInstance();
  13. $frontController->throwExceptions(true);
  14. $frontController->setControllerDirectory('../application/controllers');
  15. $frontController->dispatch();

application/controllers/IndexController.php:
  1. <?php
  2. class IndexController extends Zend_Controller_Action {
  3. public function init()
  4. { $this->view->baseUrl = $this->_request->getBaseUrl();
  5. Zend_Layout::startMvc();
  6. }
  7. function indexAction()
  8. { $this->view->title = "Strona główna";
  9. }
  10. }

application/controllers/SpisController.php:
  1. <?php
  2. class SpisController extends Zend_Controller_Action {
  3. public function init()
  4. { $this->view->baseUrl = $this->_request->getBaseUrl();
  5. Zend_Layout::startMvc();
  6. }
  7. function indexAction()
  8. { $this->view->title = "Spis";
  9. }
  10. }

applications/views/scripts/layout.phtml
  1. <title><?php echo $this->escape($this->title); ?></title>
  2. </head>
  3. <a href="<?php echo $this->baseUrl; ?>/index/index">Główna</a>
  4. <a href="<?php echo $this->baseUrl; ?>/spis/index">Spis</a><br />
  5. <?php echo $this->layout()->content; ?>
  6. </body></html>

applications/views/scripts/index/index.phtml i applications/views/scripts/spis/index.phtml, które wyglądają tak:
  1. <h1><?php echo $this->escape($this->title); ?></h1>


Problem polega na tym, że w chwili klikania na drugi link tj. do akcji z kontrolera spis wyskakuje mi błąd 404, że nie znajduje pliku na serwerze i nie wiem dlaczego tak się dzieje. Co do kontrolera index to wszystko działa jak należy.
Za wszelką pomoc będę wdzięczny.
darko
Dziwny ten index.php, pokaż jeszcze Bootstrap.php
bastard13
A czy w tym wypadku to nie to samo? Nie mam żadnego Bootstrap.php, ale przecież wszystko uruchamiam w index.php. To moja pierwsza styczność z zendem, więc może rzeczywiście w tym jest problem, ale korzystałem z tutoriala na heavymind.net i tam właśnie bootstrap'em był index.php. I śmieszne jest również to, że w IndexController wszystko mi działa. Dodałem tam jeszcze parę akcji i nie ma żadnych problemów.
darko
W takim razie nic nie poradzę, nie chcę wprowadzić w błąd i namieszać, pierwszy raz coś takiego widzę, żeby nie było Bootstrap blinksmiley.gif
melkorm
@darko - widać że zacząłeś zenda w okolicach 1.9~~ gdzie wszedł Bootstraper, wcześniej właśnie się tak inicjowało aplikację i przeładowywało FrontController jak i ActionController winksmiley.jpg

@bastard13 a pokaż definicję .htaccess + czy deklarujesz gdzieś router? (jeżeli nie to jest dobrze bo jest brany defaultowy czyli ":controller/:action/*"
darko
Cytat(melkorm @ 20.01.2010, 12:46:36 ) *
@darko - widać że zacząłeś zenda w okolicach 1.9~~ gdzie wszedł Bootstraper, wcześniej właśnie się tak inicjowało aplikację i przeładowywało FrontController jak i ActionController winksmiley.jpg

Kurcze... masz mnie winksmiley.jpg ale faktycznie, na ZF pracuję od około 2 miesięcy. Będę obserwować ten temat z czystej ciekawości.
Pozdrawiam

// edit
~bastard13
Na jakiej wersji ZF pracujesz? Jeśli na nowszej (1.9.xxx), to może jednak lepiej byłoby wprowadzić Bootstrap, zamiast uczyć się takich "staroci" ?
melkorm
@darko, nie staroć winksmiley.jpg Inne podejście trochę. Chociaż znowu jest w planach wywalenie tego w wersji 2.0 :x ( bo miało niby już odejść w wersji 1.9 ale community protestowało więc zostawili).

Chociaż jestem za, w końcu to wywalą więc lepiej przestawić się na Bootstrappery winksmiley.jpg
bastard13
Mam Zenda 1.9.3, ale co do tego Bootstrapera to czy gdyby był konieczny to nie wyrzucałoby mi błędu przy próbie wyswietlenia akcji z IndexController? A w tym cała śmieszność problemu, że z tym nie ma najmniejszego problemu (tzn. z indexController), jedynie jak chce wyświetlić akcje z innego kontrolera to wyskakuje, że pliku brak na serwerze.
Co do .htaccess to w kat głównym wygląda tak:
  1. RewriteEngine On
  2. RewriteRule ^.*$ public/index.php

w public/
  1. RewriteEngine off
  2. allow from all

w library/ i application/
  1. deny from all

i jeszcze config.ini w application/
  1. [general]
  2. enviroment config;
  3. Debug Configuration;
  4. debug.status = true;
  5. General Path Configuration;
  6. path.models = ../application/models/
  7. path.images = ../images/

Więcej plików nie mam.
Jeszcze ewentualnie wersja php: 5.2.5, więc to też nie jest problem. Co do ustawień serwera to też powinno być ok (bo indexController działa).
Jutro przed pracą (o ile wstanę na tyle wcześnie:) to jeszcze spróbuję z inną wersją bibliotek zenda. Może to coś da.
Tak czy inaczej czekam na wszelkie pomysły:)
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.