Zend studio, l'url non implementa l'action

Salve a tutti sono un novizio  del pattern MVC su zend, ho implementato il mio primo file semplicissimo file indexController.php:

class IndexController extends Zend_Controller_Action {

    public function init() {
    }  

    public function indexAction() {  
        echo 'chiamo index';
    }      

    public function bodyAction() {
        echo 'chiamo body';
    }
}

Ora quando digito localhost/progetto/body, in teoria dovrebbe stamparmi 'chiamo body', ma mi da errore 404, ho provato anche con localhost/progetto/public/body. Niente da fare, il problema è sul router ma non ne riesco a venire a CAPO !!!! HELP PLEASE !

inviato 4 anni fa
marcodvt
modificato 4 anni fa
Gianni Tomasicchio
X 0 X

Ciao, ma se usi IndexController l'url da digitare deve essere http://localhost/index/body, a meno che non hai impostato un url di base differente.

risposto 4 anni fa
gbenfe
gbenfe
16
X 0 X

L'URL corretto dovrebbe essere http://localhost/progetto/index/body/ ipotizzando che il file index.php sia nella cartella "progetto". Sempre in questa cartella deve esserci il file .htaccess con le regole per l'URL rewrite ed infine tali direttive devono essere abilitate nel file di configurazione di apache ("AllowOverride All")

risposto 4 anni fa
Gianni Tomasicchio
X 0 X

La configurazione dipende anche dal server, se non hai impostato un virtual host devi indicare a zend la sintassi base dell'url. Se il tuo url base è http://localhost/progetto nel file .htaccess devi inserire la direttiva "rewriteBase /progetto" e nel file application.ini "resources.frontController.baseUrl = "/progetto" altrimenti "progetto è considerato come nome di modulo o di controller.

risposto 4 anni fa
gbenfe
gbenfe
16
Purtroppo niente da fare :-( . Può essere che il problema sia la cartella public ? Purtroppo questa struttura viene creata di default da zend studio quindi non so proprio dove sbattere la testa :-(marcodvt 4 anni fa
Potresti postare la configurazione di apache relativa alla cartella del progetto? Hai fatto un virtualhost?gbenfe 4 anni fa
Intendi il contenuto del file http.conf ? cmq non ho fatto nessun virtualhost, uso zend server se può servire....marcodvt 4 anni fa
Allora il problema potrebbe essere quello, la tua cartella "progetto" non contiene il file index.php, ma la struttura base di un progetto Zend. Quindi dovresti avere le cartelle "application", "library", "public". E' per questo che ti conviene fare un virtualhost.gbenfe 4 anni fa
Si è proprio così, a che cartella imposto il virtualhost ? Ti ringrazio cmq delle dritte !marcodvt 4 anni fa
Alla public. Imposti un server name e poi modifichi il file host della macchina.gbenfe 4 anni fa
Ok il virtual host l'ho impostato e funziona, ma quando vado a inserire le righe relative a <directory il server si blocca. Vi posto il codice del virtualhost: </VirtualHost> <VirtualHost sitocd:80> ServerAdmin webmaster@dummy-host.example.com DocumentRoot "C:\Program Files\Zend\Apache2/htdocs/sitocd/public" SetEnv APPLICATION_ENV "development" <Directory C:\Program Files\Zend\Apache2/htdocs/sitocd/public> DirectoryIndex index.php AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>Sto impazzendo HEEELP !!marcodvt 4 anni fa
NameVirtualHost *:80 # # VirtualHost example: # Almost any Apache directive may go into a VirtualHost container. # The first VirtualHost section is used for all requests that do not # match a ServerName or ServerAlias in any <VirtualHost> block. # <VirtualHost *:80> ServerName nomesito DocumentRoot "C:\percorso\public" <Directory "C:\percorso\public"> Options Indexes FollowSymLinks AllowOverride All Allow from all </Directory> </VirtualHost>gbenfe 4 anni fa
ricorda però che la prima definizione di virtualhost rappresenta ciò che il server ti mostra se scrivi come url "localhost". quindi come primo virtualhost dovresti definire la cartella di base del tuo server, poi come ulteriore virtualhost quella del sito che vuoi pubblicaregbenfe 4 anni fa
X 0 X

Risolto era una questione di \ e / di percorsi insomma :-) 

Posto i 3 step che ho eseguito :

1)Togliere il commento (il cancelletto) vicino alla direttiva #Include conf/extra/httpd-vhosts.conf nel file httpd.conf

2) Settare il virtualhost nel file httpd-vhosts.conf così:

<VirtualHost progetto:80>    ServerAdmin progetto  DocumentRoot "ILMIOPERCORSO\Zend\Apache2\htdocs\progetto\public"  <Directory "ILMIOPERCORSO\Zend\Apache2\htdocs\progetto\public">  Order allow,deny         Allow from all     AllowOverride all    </Directory>    </VirtualHost>  

3)Configuro windows affinchè riconosca l'host editando quindi il file c:\windows\system32\drivers\etc\hosts aggiungendo la riga:

127.0.0.1   progetto

Grazie a tutti e spero di essere stato preciso nell'esposizione della soluzione !

risposto 4 anni fa
marcodvt
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda