Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous,
j'ai un petit problème avec le formulaire de login. Mon index fonctionne très bien (index/index) par contre quand je veux accèder à mon formulaire de connexion, la page est introuvable (login/index).
Je ne pense que ça vienne du code vu que je n'arrive pas à l'atteindre mais d'ou cela pourrait-il venir ? Mes rewrites ont l'air d'être correctes vu je suis bien redirigé pour l'index.
Merci !
Hors ligne
vérrifie ton .htaccess et ce qui va avec (conf apache => mod_rewrite)
Dernière modification par nORKy (23-09-2009 07:52:16)
Hors ligne
Fais une recherche sur "404" (c'est ne No de l'erreur "page not found"), tu dois avoir pas mal de messages qui parlent de ça.
A+, Philippe
Hors ligne
J'ai peu fouillé sur le forum et je n'ai pas trouvé mon bonheur même si il y a pas mal de sujets là dessus. Cependant, j'ai essayé de faire un lien vers ce controleur :
echo '<br /><a href="login/index">toto</a>';
j'ai toujours ma page 404 alors que le lien m'envoie bien sur http://localhost/projet/login/index. Voici ma configuration apache2 (linux) :
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/projet/public/
SetEnv APPLICATION_ENV development
#RewriteEngine On
#RewriteCond %{REQUEST_FILENAME} -s [OR]
#RewriteCond %{REQUEST_FILENAME} -l [OR]
#RewriteCond %{REQUEST_FILENAME} -d
#RewriteRule ^.*$ - [NC,L]
#RewriteRule ^.*$ index.php [NC,L]
<Directory /var/www/projet/public/>
Options FollowSymLinks
AllowOverride None
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
Est ce que vous voyez quelque chose de faux ?
Merci
Hors ligne
pourquoi il y a projet dans ton url alors que ton virtualhost point dans le dossier projet ?
A+JYT
Hors ligne
sekaijin a écrit:
pourquoi il y a projet dans ton url alors que ton virtualhost point dans le dossier projet ?
A+JYT
Euh... désolé mais je n'ai pas tout compris, je ne suis qu'un débutant dans l'utilisation de Zend et des virtual hosts.
Hors ligne
Bonjour,
Ce que sekaijin veut dire, c'est que tu utilises l'url suivante: http://localhost/projet/login/index pour accéder à ta page, alors que tu devrais avoir http://localhost/login/index , puisque dans ta section virtualhost, tu précises que le serveur a pour document racine /var/www/projet/public/
Quand tu tapes http://localhost/index.php par exemple, ton serveur va chercher le fichier situé sous :
/var/www/projet/public/index.php
En espérant t'avoir aidé
Hors ligne
Merci pour ces éclaircissements mais http://localhost/index.php me renvoit une erreur 404 tout comme http://localhost/projet/login
Quelqu'un aurait-il une piste ?
Info utile ou pas supplémentaire, dans LoginController, je suis obligé de mettre : "require_once 'Zend/Controller/Action.php';" sinon il me dit qu'il ne connait pas Zend_Controller_Action. J'ai cette erreur quand je vais sur l'url : http://localhost/projet/application/controllers/LoginController.php vu que je n'y arrive pas autrement.
Dernière modification par Nemesis007 (24-09-2009 18:41:42)
Hors ligne
Ta classe login doit ressembler à cela:
class LoginController extends Zend_Controller_Action
{
public function indexAction()
{
}
}
et dans index.php quelque chose qui ressemble à ça:
//instance du controller
$frontController = Zend_Controller_Front::getInstance();
//repertoire ou sont les controllers de ton application
$frontController->setControllerDirectory('../application/controllers');
//activation ou non des exceptions
$frontController->throwExceptions(true);
//En avant...
$frontController->dispatch();
donc quand tu interroges http://localhost/login le frontcontroller cherche dans ../application/controllers un controller se nommant LoginController.php. l'action par défaut est index. Si tu ne fais rien de particulier dans la fonction indexAction(), la page index.phtml située sous application/views/scripts/login va s'afficher.
Voilà j'espère avoir été clair, mais il y a de bons tutos sur le sujet
Dernière modification par Junk (24-09-2009 18:53:23)
Hors ligne
Junk a écrit:
et dans index.php quelque chose qui ressemble à ça:
//instance du controller
$frontController = Zend_Controller_Front::getInstance();
//repertoire ou sont les controllers de ton application
$frontController->setControllerDirectory('../application/controllers');
//activation ou non des exceptions
$frontController->throwExceptions(true);
//En avant...
$frontController->dispatch();)
J'ai tout cela dans mon Boostrap.php dans le dossier application :
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
function _initFrontController()
{
$frontController = Zend_Controller_Front::getInstance();
// APPLICATION_PATH = /var/www/projet/application
$frontController->setControllerDirectory(APPLICATION_PATH .'/controllers');
$frontController->setParam('env', APPLICATION_ENVIRONMENT);
// action helpers
Zend_Controller_Action_HelperBroker::addPath(APPLICATION_PATH .'/controllers/helpers');
$frontController->throwExceptions(true);
}
public function run()
{
$frontController = Zend_Controller_Front::getInstance();
$frontController->dispatch();
}
}
Mon index.php dans public ressemble à cela :
define('BASE_PATH', realpath(dirname(__FILE__)));
define('APPLICATION_PATH', BASE_PATH . '/application');
set_include_path('.'
. PATH_SEPARATOR . '/library'
. PATH_SEPARATOR .BASE_PATH . '/library'
. PATH_SEPARATOR . get_include_path());
// APPLICATION_ENVIROMENT defines which config section is loaded
if(!defined('APPLICATION_ENVIRONMENT')) {
define('APPLICATION_ENVIRONMENT', 'development');
}
require_once 'Zend/Application.php';
$application = new Zend_Application(APPLICATION_ENVIRONMENT,
array(
'bootstrap'=>array('path'=>APPLICATION_PATH.'/Bootstrap.php'),
'autoloadernamespaces' => array('Zend', 'App')
));
$application->bootstrap();
$application->run();
Ai-je faux quelque part ?
Hors ligne
Bon j'ai déjà trouvé un élément de réponse mais pas la solution complète. j'ai vu que j'avais un index.php dans mon dossier /projet au lieu dans public. Cela ne règle quand même pas le problème.
Quand je vois les logs apache, je remarque mon lien dans IndexController ( echo '<br /><a href="login/index">toto</a>'; ) pointe en fait sur /var/www/projet/public/login/index et du coup c'est normal qu'il ne le trouve pas. Pourquoi pointe-t-il sur public ? Que dois je mettre dans public pour qu'il me redirige vers mon LoginController ?
J'y suis presque !
Hors ligne
Bon bon bon, je réitère mon appel à l'aide.
Mon vhost :
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/projet/public
SetEnv APPLICATION_ENV development
#RewriteEngine On
#RewriteCond %{REQUEST_FILENAME} -s [OR]
#RewriteCond %{REQUEST_FILENAME} -l [OR]
#RewriteCond %{REQUEST_FILENAME} -d
#RewriteRule ^.*$ - [NC,L]
#RewriteRule ^.*$ index.php [NC,L]
<Directory /var/www/projet/public>
Options FollowSymLinks
AllowOverride None
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
mon public/index.php :
<?php
/**
* My new Zend Framework Project
*
* @author
* @version
*/
// 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'));
/** Zend_Application */
require_once 'Zend/Application.php';
// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/config/application.ini'
);
$application->bootstrap();
$application->run();
mon application/Bootstrap.php
<?php
/**
* My new Zend Framework project
*
* @author
* @version
*/
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function __initFrontController()
{
$frontController = Zend_Controller_Front::getInstance();
$frontController->setControllerDirectory(APPLICATION_PATH .'/controllers');
$frontController->setParam('env', APPLICATION_ENVIRONMENT);
// action helpers
Zend_Controller_Action_HelperBroker::addPath(APPLICATION_PATH .'/controllers/helpers');
$frontController->throwExceptions(true);
}
protected function __initView()
{
// Initialize view
$view = new Zend_View();
$view->doctype('XHTML1_STRICT');
$view->headTitle('My First Zend Framework Application');
// Add it to the ViewRenderer
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
'ViewRenderer'
);
$viewRenderer->setView($view);
// Return it, so that it can be stored by the bootstrap
return $view;
}
public function run()
{
$frontController = Zend_Controller_Front::getInstance();
$frontController->dispatch();
}
}
mon controllers/IndexController :
<?php
class IndexController extends Zend_Controller_Action
{
public function indexAction()
{
// action body
$this->view->testMessage = "Mon message de test";
echo '<br /><a href="/login/index">toto</a>';
}
}
Lien atteint quand je clique sur le lien ci-dessus : /var/www/projet/public/login...
Merci.
Hors ligne
Bonjour,
J'ai exactement le même problème que Memesis007...et ça fait quelques jours que je galère avec le framework.
Quelqu'un aurait-il avancé et trouvé une solution à ce souci ?
Merci d'avance
Hors ligne
faudrait pas dé-commenter ça?
#RewriteEngine On #RewriteCond %{REQUEST_FILENAME} -s [OR] #RewriteCond %{REQUEST_FILENAME} -l [OR] #RewriteCond %{REQUEST_FILENAME} -d #RewriteRule ^.*$ - [NC,L] #RewriteRule ^.*$ index.php [NC,L]
Hors ligne
Pages: 1