php - invokables - zend framework tutorial
Página no encontrada en URL de solicitud en aplicación de marco zend 2 (4)
Soy novato en Zend Framework y estoy tratando de configurar el zend. Se instaló con éxito la aplicación zendskeleton en la ventana 7 y XAMPP
Después de la instalación, estoy creando un nuevo módulo de Álbum según la definición en la guía del usuario. Me hicieron todos los códigos y páginas de acuerdo a la guía, pero después de eso me permitieron abrir el módulo del álbum . recibí el error 404 no encontrado.
aquí código
application.config
return array( ''modules'' => array( ''Application'',''Album'', ), ''module_paths'' => array( ''./module'', ''./vendor'', ), ''config_glob_paths'' => array( ''config/autoload/{,*.}{global,local}.php'', ), ), );
module.config
return array( ''controllers'' => array( ''invokables'' => array( ''Album/Controller/Album'' => ''Album/Controller/AlbumController'', ), ), ''router'' => array( ''routes'' => array( ''album'' => array( ''type'' => ''segment'', ''options'' => array( ''route'' => ''/album[/][:action][/:id]'', ''constraints'' => array( ''action'' => ''[a-zA-Z][a-zA-Z0-9_-]*'', ''id'' => ''[0-9]+'', ), ''defaults'' => array( ''controller'' => ''Album/Controller/Album'', ''action'' => ''index'', ), ), ), ), ), ''view_manager'' => array( ''template_path_stack'' => array( ''album'' => __DIR__ . ''/../view'', ), ), );
Module.php
namespace Album; // Add these import statements: use Album/Model/Album; use Album/Model/AlbumTable; use Zend/Db/ResultSet/ResultSet; use Zend/Db/TableGateway/TableGateway; class Module { // getAutoloaderConfig() and getConfig() methods here // Add this method: public function getServiceConfig() { return array( ''factories'' => array( ''Album/Model/AlbumTable'' => function($sm) { $tableGateway = $sm->get(''AlbumTableGateway''); $table = new AlbumTable($tableGateway); return $table; }, ''AlbumTableGateway'' => function ($sm) { $dbAdapter = $sm->get(''Zend/Db/Adapter/Adapter''); $resultSetPrototype = new ResultSet(); $resultSetPrototype->setArrayObjectPrototype(new Album()); return new TableGateway(''album'', $dbAdapter, null, $resultSetPrototype); }, ), ); } }
httpd-vhosts.conf
<VirtualHost *:81> ServerName zf2-tutorial.localhost DocumentRoot "C:/xampp/htdocs/ZendSkeletonApplication/ZendSkeletonApplication-master/public" SetEnv APPLICATION_ENV "development" <Directory C:/xampp/htdocs/ZendSkeletonApplication/ZendSkeletonApplication-master/public> DirectoryIndex index.php AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
entrada de host en system32
127.0.0.1:8081 zf2-tutorial.localhost
¿Cómo puedo manejarlo? Gracias
Las configuraciones incorrectas básicas en su configuración causan este error.
- No uso Windows por mucho tiempo, pero estás usando las barras diagonales tanto hacia adelante como hacia atrás en tus rutas. En primer lugar, debe encontrar el separador de directorios correcto para Windows y atenerse a él. Esto parece problemático:
C:/xampp/htdocs/foo/bar/public
- Está definiendo un host virtual que escucha cualquier dirección IP en el puerto
81
(*: 81), una entrada hosts System32 que apunta al puerto8081
como aliaszf2-tutorial.localhost
e intenta llamar azf2-tutorial.localhost/album
url usando el puerto80
. Obteniendo este tipo de error bastante normal.
Después de leer por completo los documentos oficiales de Inicio y Uso de Apache Web Server , podrá encontrar fácilmente la solución.
Necesitas esta entrada de hostfile. Agregar puertos no es posible en este archivo.
127.0.0.1 zf2-tutorial.localhost
El sitio web ahora está disponible en zf2-tutorial.localhost: 81 (y no 8081, establece 81 como el número de puerto en la primera línea de httpd-vhosts.conf)
Parece que te falta una entrada de vhost en tu servidor web. Esta podría ser la razón por la cual su solicitud no resuelve su solicitud correcta. Verifique de nuevo "Getting Startet: A skeleton application" para proporcionar una configuración adecuada.
cuando apunta con su raíz de documento de apache a C:/xampp/htdocs/ZendSkeletonApplication/ZendSkeletonApplication-master/public
necesita utilizar en su navegador esta url http://zf2-tutorial.localhost:8081/album
y no como usted escribió http://zf2-tutorial.localhost/ZendSkeletonApplication/ZendSkeletonApplication-master/public/album
esta url señala internamente a un módulo / ubicación diferente.
//editar
si esto no funciona compruebe su carpeta zf2 /public
si hay un archivo .htaccess
presente; de lo contrario, utilice el archivo de la aplicación zend skeleton aquí https://github.com/zendframework/ZendSkeletonApplication/blob/master/public/.htaccess
compruebe también su entrada apache vhost
si el port
es igual a su puerto de archivos windows host
Windows.
¡Asegúrate de que apache ModRewrite
esté cargado!