Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 16-04-2010 10:07:53

Ariaron
Membre
Date d'inscription: 16-04-2010
Messages: 23

Creation Controlleur

Bonjour,

C'est certainement une erreur très bête ou un oubli évident, mais je suis débutant et j'ai un soucis avec le controller que j'ai créé.

Je suis bien passé par la commande create controller Moncontroller
puis
create action ajouter moncontroller
etc...

J'ai configuré le fichier MoncontrollerController.php pour y remplir les méthodes.

Seulement quand je vais sur l'URL : http://localhost/mon_appli/public/moncontroller
URL inexistante !

Y a-t-il une autre étape après les create controller / create action pour pouvoir se servir du controller ?

Merci

Dernière modification par Ariaron (16-04-2010 10:10:33)

Hors ligne

 

#2 16-04-2010 10:28:00

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: Creation Controlleur

Le plus simple c'est de mettre ton code parce que perso j'ai rien compris :x
Tu as créé quel arborescence de fichier?
Ton fichier index.php (ou bootstrap) ressemble à quoi?
Ton fichier MoncontrollerController.php quel tete à t-il...

Sinon on peut pas vraiment t'aider!
wink

Hors ligne

 

#3 16-04-2010 10:41:23

Ariaron
Membre
Date d'inscription: 16-04-2010
Messages: 23

Re: Creation Controlleur

Voici pour le bootstrap :

Code:

<?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initAutoload()
    {
        $moduleLoader = new Zend_Application_Module_Autoloader(array(
            'namespace' => '',
            'basePath' => APPLICATION_PATH));
        return $moduleLoader;
    }
    
    protected function _initViewHelpers()
    {
        $this->bootstrap('layout');
        $layout = $this->getResource('layout');
        $view = $layout->getView();
        $view->doctype('XHTML1_STRICT');
        $view->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8');
        $view->headTitle()->setSeparator(' - ');
        $view->headTitle('Syrhano');
    }

}

( Syrhano est le nom de l'appli ).

En fait, j'ai suivi un tutoriel de developpez.net et tout fonctionne bien quand je suis sur le controller Index, les ajouts, modifs et suppressions dans la base de données.

J'ai essayé de créer un autre controller (Etablissement) et de copier dans Etablissement le même code que celui qui fonctionnait  dans index ( car je voudrais réserver l'index à la page d'accueil du site ). Mais là, ça ne fonctionne pas.

Voici l'arborescence de mon dossier Application :

|-- application
|   |-- Bootstrap.php
|   |-- configs
|   |   |-- application.ini
|   |-- controllers
|   |   |-- ErrorController.php
|   |   |-- EtablissementController.php
|   |   |-- IndexController.php
|   |-- forms
|   |   |-- Etablissement.php
|   |-- layouts
|   |   |-- layout.phtml
|   |-- models
|   |   `-- DbTable
|   |       |-- Etablissements.php
|   `-- views
|       |-- helpers
|       |   `-- BaseUrl.php
|       `-- scripts
|           |-- error
|           |   `-- error.phtml
|           |-- etablissement
|           |   |-- ajouter.phtml
|           |   |-- index.phtml
|           |   |-- modifier.phtml
|           |   `-- supprimer.phtml
|           `-- index
|               |-- ajouter.phtml
|               |-- ajouter.phtml~
|               |-- index.phtml
|               |-- index.phtml~
|               |-- modifier.phtml
|               |-- modifier.phtml~
|               |-- supprimer.phtml
|               `-- supprimer.phtml~




Merci

Dernière modification par Ariaron (16-04-2010 10:43:57)

Hors ligne

 

#4 16-04-2010 10:48:30

Ariaron
Membre
Date d'inscription: 16-04-2010
Messages: 23

Re: Creation Controlleur

Ah et pardon, j'oubliais l'autre fichier, EtablissementController.php il a cette forme là :

Code:

<?php

class EtablissementController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
    }

    public function indexAction()
    {
         ....
    }

     public function ajouterAction()
     {
          ....
     }

     public function modifierAction()
     {
           ....
     }

      public function supprimerAction()
      {
           ....
      }
}

Je ne détaille pas les méthodes, ce serait long... mais ce sont exactement les mêmes que lorsqu'elles fonctionnaient dans le controller Index.

Dernière modification par Ariaron (16-04-2010 10:49:10)

Hors ligne

 

#5 16-04-2010 10:58:51

Godzinho
Membre
Lieu: Toulouse
Date d'inscription: 15-10-2009
Messages: 58

Re: Creation Controlleur

Je ne vois pas ton Zend_Layout::startMvc(), est-ce normal ?

Hors ligne

 

#6 16-04-2010 11:02:02

Ariaron
Membre
Date d'inscription: 16-04-2010
Messages: 23

Re: Creation Controlleur

Je ne connais pas cette méthode, on est sensés la mettre où ?

Si le soucis vient de cette méthode, je me demande pourquoi ça fonctionne sous le controller index.

Ce qui est aussi perturbant, c'est que chaque tuto qu'on trouve sur le net a des approches très différentes de Zend...

Hors ligne

 

#7 16-04-2010 11:05:27

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: Creation Controlleur

Il doit manquer un fichier ou tu défini les chemin vers la librairie, etc. C'est celui-ci qui m'intéresse big_smile

Hors ligne

 

#8 16-04-2010 11:06:55

Ariaron
Membre
Date d'inscription: 16-04-2010
Messages: 23

Re: Creation Controlleur

application.ini ?

Code:

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
phpSettings.date.timezone = "Europe/Paris"
resources.db.adapter = PDO_MYSQL
resources.db.params.host = localhost
resources.db.params.username = root
resources.db.params.password = ****
resources.db.params.dbname = services_syrhano
resources.layout.layoutpath = APPLICATION_PATH "/layouts"

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1

Dernière modification par Ariaron (16-04-2010 11:07:06)

Hors ligne

 

#9 16-04-2010 11:08:00

Godzinho
Membre
Lieu: Toulouse
Date d'inscription: 15-10-2009
Messages: 58

Re: Creation Controlleur

Perso, je ne passe pas par le bootstrap mais par un index ce qui est sensiblement la même chose.
Dans mon index je fais :

Code:

...

$options = array('layoutPath' => $appPath . DIRECTORY_SEPARATOR . 'views' . DIRECTORY_SEPARATOR . 'layouts');
Zend_Layout::startMvc($options);

try {
    $fc->dispatch(); // $fc est mon front controller
} catch (Zend_Exception $e) {
    echo $e->getMessage();
}

Je ne sais pas si sa peut t'aider, mais essaye quand même.

Hors ligne

 

#10 16-04-2010 11:11:22

Ariaron
Membre
Date d'inscription: 16-04-2010
Messages: 23

Re: Creation Controlleur

Merci, j'ai essayé mais avec ça, plus rien ne fonctionne, même avec le controller Index. La page reste blanche.

(Peu importe où je met le code : j'ai essayé dans chacune des deux méthodes).

Hors ligne

 

#11 16-04-2010 11:25:55

Ariaron
Membre
Date d'inscription: 16-04-2010
Messages: 23

Re: Creation Controlleur

Bon, un collègue m'a filé des bouquins, je vais me démerder, j'y connais vraiment trop rien donc je vais pas vous faire perdre votre temps.

Merci pour vos réponses.

Hors ligne

 

#12 16-04-2010 11:49:09

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: Creation Controlleur

Tu dois avoir un fichier index.php
Bref c'est comme tu veux!

Hors ligne

 

#13 16-04-2010 12:19:39

Ariaron
Membre
Date d'inscription: 16-04-2010
Messages: 23

Re: Creation Controlleur

Oui, voici mon fichier public/index.php  :

Code:

<?php

// Define path to application directory
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'),
    get_include_path(),
)));

/** Zend_Application */
require_once 'Zend/Application.php';


// Create application, bootstrap, and run
$application = new Zend_Application(
    APPLICATION_ENV,
    APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
            ->run();

Hors ligne

 

#14 16-04-2010 12:54:41

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: Creation Controlleur

Et quand tu vas sur : http://localhost/mon_appli/public/etablissement/index ça t'affiche une page blanche alors que http://localhost/mon_appli/public/index fonctionne? Tu as bien rempli les vue de ton controller Etablissement?

Hors ligne

 

#15 16-04-2010 12:58:05

Ariaron
Membre
Date d'inscription: 16-04-2010
Messages: 23

Re: Creation Controlleur

http://localhost/mon_appli/public/etablissement/index : le navigateur ne trouve pas l'URL.

Par l'index, ça fonctionne bien oui. Les vues du controller Etablissement sont, pour l'instant, remplies par une ligne de test.

Hors ligne

 

#16 16-04-2010 15:10:22

Zartan
Membre
Date d'inscription: 22-06-2009
Messages: 49

Re: Creation Controlleur

Je pense que le contrôleur frontal a besoin qu'on lui indique l'url de base  :

$frontController = Zend_Controller_Front::getInstance();
$frontController->setBaseUrl('http://localhost/mon_appli/public/') ;

En créant un virtual host cela serait plus simple. Et si ça ne fonctionne toujours pas il faut regarder au niveau du .htaccess.

Hors ligne

 

#17 16-04-2010 15:19:40

Ariaron
Membre
Date d'inscription: 16-04-2010
Messages: 23

Re: Creation Controlleur

Je met ça où ? Dans index.php ?

Sinon, voici mon fichier .htaccess :

Code:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

J'ai également verifié que mon serveur Apache avait bien le module rewrite activé.

Hors ligne

 

#18 16-04-2010 15:32:12

Zartan
Membre
Date d'inscription: 22-06-2009
Messages: 49

Re: Creation Controlleur

Dans le bootstrap.php, par exemple dans une méthode _initBaseUrl()

Pour le htaccess:
RewriteBase /mon_appli/public/

après RewriteEngine on

Encore une fois il vaudrait mieux prendre le temps de créer un virtual host, ça poserait moins de problèmes.

Hors ligne

 

#19 16-04-2010 15:38:36

Ariaron
Membre
Date d'inscription: 16-04-2010
Messages: 23

Re: Creation Controlleur

Ça ne fonctionne toujours pas. Je vais voir pour le virtual host.

Merci

Hors ligne

 

#20 16-04-2010 15:48:24

Zartan
Membre
Date d'inscription: 22-06-2009
Messages: 49

Re: Creation Controlleur

Ce qui serait utile ce serait d'avoir le message d'erreur.

Hors ligne

 

#21 16-04-2010 16:06:00

Ariaron
Membre
Date d'inscription: 16-04-2010
Messages: 23

Re: Creation Controlleur

Voici l'erreur que j'avais :
The requested URL /syrhano2/public/etablissement was not found on this server.


Bon sinon là j'ai configuré un virtual host rapidement, donc j'arrive à aller sur la page principale ( celle du controleur index : http://syrhano.zf.localhost/ ), mais dès que je veux passer sur http://syrhano.zf.localhost/etablissement/, encore une erreur :

The server encountered an internal error or misconfiguration and was unable to complete your request.

Hors ligne

 

#22 16-04-2010 16:20:22

Zartan
Membre
Date d'inscription: 22-06-2009
Messages: 49

Re: Creation Controlleur

http://syrhano.zf.localhost/index.php/etablissement/

Si cela fonctionne ça signifie qu'il faut simplement configurer une route.

Hors ligne

 

#23 16-04-2010 16:38:37

Ariaron
Membre
Date d'inscription: 16-04-2010
Messages: 23

Re: Creation Controlleur

Oui, ça fonctionne ! Ah, un peu de bonne humeur avant le week-end, merci.

Hors ligne

 

#24 19-04-2010 09:56:25

Ariaron
Membre
Date d'inscription: 16-04-2010
Messages: 23

Re: Creation Controlleur

Re bonjour à tous,

Je vois un peu comment créer une route statique, mais pour passer de
http://syrhano.zf.localhost/index.php/etablissement/
à
http://syrhano.zf.localhost/etablissement/  ,  c'est sûrement très simple mais je ne vois pas !

Merci

Hors ligne

 

#25 19-04-2010 10:34:29

GueloSuperStar
Membre
Lieu: Paris
Date d'inscription: 05-08-2009
Messages: 107

Re: Creation Controlleur

Il faut surement que tu créé un virtual host

Code:

<VirtualHost *:80>
    ServerAdmin mail@maill.fr
    DocumentRoot C:/wamp/www/localhost
    ServerName localhost
    ServerAlias http://localhost
    <Directory C:/wamp/www/localhost>
    DirectoryIndex index.php
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>

ou sinon dans application.ini mettre

Code:

resources.frontController.baseUrl = "http://syrhano.zf.localhost/pubic/"

J'espère que cela pourra t'aider wink


A+ Guelo Super Star

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages