Por convención, las acciones de los controladores que se pueden ejecutar desde
un request deben tener sufijo "Action". Ahora se está permitiendo que acciones
sin sufijo (métodos comunes) se ejecuten desde una URL.
El problema está en:
https://code.google.com/p/yupp/source/browse/trunk/YuppPHPFramework/core/routing
/core.routing.Executer.class.php
Está línea ejecuta el método tal cual fue pasado en la URL como action:
{{{
try
{
$model_or_command = $controllerInstance->{$action}();
}
}}}
Y la verificación de la convención se hace como excepción cuando no coincide
la acción con un método de YuppController en __call de
https://code.google.com/p/yupp/source/browse/trunk/YuppPHPFramework/core/mvc/cor
e.mvc.YuppController.class.php
{{{
if (method_exists($this, $method . 'Action'))
{
return $this->{$method . 'Action'}( $args );
}
}}}
1. La ejecución de la acción con sufijo Action debería ser el caso por
defecto, no la excepción.
2. Si falla la ejecución porque la acción xyzAction no existe, simplemente
devolver 404 not found porque se está queriendo acceder a una acción que no
fue declarada como tal. Esto es además una garantía de seguridad para que no
se ejecute nada que no se deba, ej. un método del controlador que no es una
acción.
Original issue reported on code.google.com by pablo.swp@gmail.com on 26 Nov 2013 at 12:56
Original issue reported on code.google.com by
pablo.swp@gmail.com
on 26 Nov 2013 at 12:56