jueves, 10 de febrero de 2011

Problema en CakePHP - Missing Method in PostController

Si estas utilizando el tutorial de CakePHP donde se crear un blog, es posible que te de este fallo al intentar añadir un post:


Missing Method in PostsController
Error: The action posts is not defined in controller PostsController
Error: Create PostsController::users() in file: app/controllers/posts_controller.php.

Cuando aparece este problema también podemos ver en el código fuente de la pagina web que la url del formulario tiene posts dos veces:

/index.php/post/posts/
/app/webroot/index.php/post/posts/

La solución mas sencilla a este problema es que al acceder a la web no uses index.php:
http://localhost/index.php/posts/add
http://localhost/posts/add

De esta forma funciona correctamente, pero si alguien pone index.php seguira fallando. Otra solucion es poner como DocumentRoot la raíz de cakephp y editar el archivo .htaccess también de la raiz de cakephp. Segun la documentación 3.3.4 Apache and mod_rewrite(and htaccess) hay que poner:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^$ app/webroot/ [L]
    RewriteRule (.*) app/webroot/$1 [L]
</IfModule>

Esto no funciona, pero si pones:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^$ app/webroot/ [L]
    RewriteRule ^index\.php/(.*)$ app/webroot/$1 [L]
    RewriteRule (.*) app/webroot/$1 [L]
</IfModule>


Funcionará de las dos formas:
http://localhost/index.php/posts/add
http://localhost/posts/add.



No hay comentarios:

Publicar un comentario