Problemi con Zend_Controller

Ciao ragazzi...da poco ho iniziato ad utilizzare Zend e cm al solito ho avuto i miei primi problemi :-(

Naturalmente ho iniziato creando il seguente script!

index.php

require_once 'Zend/Controller/Front.php';
Zend_Controller_Front::run('controllers');

IndexController.php

require_once 'Zend/Controller/Action.php';

class IndexController extends Zend_Controller_Action
{
    public function indexAction()
    {
        echo 'Hello World';
    }

    public function noRouteAction()
    {
        $this->_redirect('/');
    }
}

Quando richiamo la pagina mi esce il seguente errore:

Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (error)' in C:\Programmi\xampp\htdocs\test\Zend\Controller\Dispatcher\Standard.php:194 Stack trace: #0 C:\Programmi\xampp\htdocs\test\Zend\Controller\Front.php(920): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1 C:\Programmi\xampp\htdocs\test\Zend\Controller\Front.php(224): Zend_Controller_Front->dispatch() #2 C:\Programmi\xampp\htdocs\test\index.php(7): Zend_Controller_Front::run('controllers/') #3 {main} thrown in C:\Programmi\xampp\htdocs\test\Zend\Controller\Dispatcher\Standard.php on line 194

Secondo me è un problema di Path cioè sbaglio a inserire il percorso della directory in Zend_Controller_Front::run('controllers');

Come posso risorvere il seguente problema?!

Grazie x le risp future!!!

inviato 7 anni fa
MaxTenco
X 0 X

Il tuo index.php contiene solo quel codice?

Perchè non segui la quick start guide ufficiale per iniziare?

risposto 7 anni fa
Mario Santagiuliana
X 0 X

Sisi l'index contiene solo questo codice!

Alla fine il codice è semplice...ma nn capisco l'errore!!!

risposto 7 anni fa
MaxTenco
X 0 X

Non è così semplice il discorso...

Devi istanziare e avviare più oggetti per avviare una applicazione Zend Framework...leggi il manuale di quick start:

http://framework.zend.com/docs/quickstart

Ma anche questa guida l'ho trovata ottima:

http://akrabat.com/zend-framework-tutorial/

Poi gli articoli qui in phpnews ti aiuteranno a capire meglio come usare certe classi.

Ciao

risposto 7 anni fa
Mario Santagiuliana
X 0 X

Grazie MarioS x la risp!!

Ora vedo di seguire la quida di PHPNEWS!

Nel caso prova a eseguire il mio codice ok?!

Grazie ankora!  ;)

risposto 7 anni fa
MaxTenco
X 0 X

Raga sn disperatissimo nn riesco a capire xkè nn mi funziona!!!

Lho caricato anke su un hosting e mi da lo stesso problema :-(

Vi prego nn c'è nessuno ke mi può aiutare?!!?

Grazie Mille!!

risposto 7 anni fa
MaxTenco
X 0 X

Per favore:

- non usare un linguaggio da sms

- spiega meglio l'errore

risposto 7 anni fa
Mario Santagiuliana
X 0 X

Allora sto cercando di imparare ad utilizzare il pattern MVC in php utilizzando Zend.

Un mio primo approccio è stato quello di analizzare il funzionamento delle richieste con Zend_Controller,cioè quello di realizzare un Controller e un'azione associato ad esso.

Data tale struttura:

/test

/controllers

-IndexController.php

/Zend

index.php

.htaccess

voglio che quando vado nel link /test mi si apre la pagina index.php,

dove verrà stampato a video "Hello World".

Però purtroppo ciò non accade mi da un errore e come se non trovasse la cartella "Controllers"

Spero di essere stato chiaro!

Grazie mille per la disponibilità!

 :)

risposto 7 anni fa
MaxTenco
X 0 X
Allora sto cercando di imparare ad utilizzare il pattern MVC in php utilizzando Zend.

Ti consiglio di utilizzare una struttura base di default fornita con Zend Tool, ti ho fornito i link con dell'ottima documentazione.

Però purtroppo ciò non accade mi da un errore e come se non trovasse la cartella "Controllers"

"mi da un errore" è troppo generico.

Ripeto: usa una struttura base di zend tool (per usarlo c'è la documentazione che ti ho anche fornito) e da la inizi a capire meglio come creare il tutto. Tanto più che mi sembra tu non stia utilizzando un albero di directory convenzionale...

risposto 7 anni fa
Mario Santagiuliana
X 0 X

Con un ritardo epico mi scuso per la mia lunga assenza da questo Forum.

Comunque sia @maxTenco quel tipo di errore è sicuramente dovuto al fatto che l'errorController non è presente nella tua include path.

Per risolvere il tuo problema puoi utilizzare le funzionalità di scaffolding dell'interfaccia a linea di comando dello Zend Framework, infatti creando un nuovo progetto verrà creato automaticamente un ErrorController.

Se invece il tuo progetto è già attivo, e non utilizzi la CLI (l'interfaccia a linea di comando) puoi creare il file ErrorController.php nella cartella dei tuoi controller (/controllers):

/** 
 * @file /controllers/ErrorController.php
 */
class ErrorController extends Zend_Controller_Action
{

    public function errorAction()
    {
        $errors = $this->_getParam('error_handler');
        
        switch ($errors->type) { 
            case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
            case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
        
                // 404 error -- controller or action not found
                $this->getResponse()->setHttpResponseCode(404);
                $this->view->message = 'Page not found';
                break;
            default:
                // application error 
                $this->getResponse()->setHttpResponseCode(500);
                $this->view->message = 'Application error';
                break;
        }
        
        $this->view->exception = $errors->exception;
        $this->view->request   = $errors->request;
    }
}

Giusto per scendere un po' più nei dettagli:

questo errore è abbastanza comune nelle applicazioni sviluppate con lo Zend Framework. È causato dall'impossibilità di includere il file ErrorController da parte del plugin Zend_Controller_Plugin_ErrorHandler che intercetta tutte le eccezioni che sfuggono durante l'esecuzione e fornisce una pagina di errore.

Il file non può essere caricato generalmente perché non esiste o non è presente in una cartella specificata nell'include path.

:bye:

risposto 7 anni fa
Andrea Turso
Andrea Turso
86
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda