2009-12-28 21 views
5

Estoy aprendiendo el patrón PHP MVC para la implementación de mi back-end. En cuanto a este excelente ejemplo:POST en PHP Controlador MVC?

La implementación MVC en PHP: El controlador

http://onlamp.com/pub/a/php/2005/11/03/mvc_controller.html

me siento cómodo con el flujo de ejecución de un GET. Pero no se menciona lo que sucede en un POST. ¿Qué haría el código de controlador típico para el POST? Me pregunto si estoy entendiendo mal algo obvio aquí, ya que no puedo encontrar situaciones similares en publicaciones anteriores de SO o en Google.

Por ejemplo: una aplicación para administrar personas, (nombre, apellido, edad) desea agregar un registro a db cuando una POST golpea el controlador. ¿Qué pasa después? Supongo que la 'Vista' no se usa en absoluto, ¿o tal vez para confirmación? ¿Hay una sola llamada del controlador a una clase modelo que agrega un registro a db? ¿O omito el controlador por completo para un POST y voy directamente a un script de "agregar registro"?

¿Hay algún ejemplo disponible?

Gracias de antemano, Ari

Respuesta

4

Bueno, POST es básicamente lo mismo que GET, solo algunos trozos aleatorios de cliente de información enviados al servidor. Entonces puedes tratarlo de la misma manera.

Trabajé con Framework CodeIgniter MVC en PHP. Utiliza GET URI para enrutar al controlador y sus métodos. Cuando llega la solicitud POST, trata su URI de la misma manera. Las acciones posteriores están en la mano del programador, que accede a los datos de solicitud POST directamente oa través de un contenedor, y tampoco puede usarlo en absoluto.

Debo decir que se centra en las piezas equivocadas. MVC no es el modelo de todo, y no dice cómo tratar las solicitudes POST o GET. Es simplemente un principio conocido muchos años antes de que el nombre "MVC" se hiciera famoso como el principio sobre la división de la lógica, los datos y la representación. Y la mayoría del software (de viejo a nuevo) realmente hace esta división, porque es muy difícil no hacer esto en la mayoría de los casos. En algunas aplicaciones, los bordes no son tan evidentes, algunos de ellos incluso no tienen un modelo de objetos. La implementación de la aplicación siempre depende de usted, porque MVC no le dice qué escribir, solo le da algunas pistas sobre la organización de su código de más alto nivel.

P.S. Perdón por mi mal ingles.

+0

Gracias chicos .Mataré esta como la respuesta correcta ya que responde mi pregunta. Solo quiero mencionar que he trabajado con MVC en un entorno de escritorio antes, pero la parte POST me confundió. Trataré de tratarlo de manera similar a un GET. Saludos Ari – BeMeCollective

3

Típicamente, el controlador podría procesar la solicitud (los procesos del controlador todas las solicitudes), a continuación, poner en el modelo para manipular realmente los datos basados ​​en la petición, y luego o bien redirigir a alguna parte else (activación de una nueva solicitud GET) o invocar una vista para generar una página resultante.

3

Bueno, si va a construir su propia solución de patrón MVC, podría hacer una cosa complicada. Como maneja MVC, se supone que debe tener un administrador de enrutamiento realmente confiable. Así que después de analizar su URL y definir qué controlador/método que se supone que disparar, se podría hacer algo como:

<?php 
    ...; 
    $method_name = (count($_POST) > 0) ? "post_".$route_result : $route_result; 
    ...; 

y más tarde en su clase controlador que podría hacer algo como:

<?php 
namespace Controllers; 

class MyController extends \System\Controller { 
    function my_method($whatever = null){ 
     ...; 
     return $this->view($model_or_whatever); // supposed that you prepared view Class in routes 
    } 

    function post_my_method($whatever = null){ 
     ...; 
     return $this->view($model_or_whatever); // supposed that you prepared view Class in routes 
    } 

} 
+11

Por favor absténgase de usar txtspeak aquí. "u", "r" y "smth" no son palabras. – Charles

+2

No volveré a repetir la próxima vez, mi inglés no es muy bueno o me acabo de acostumbrar a acortar mis mensajes –

Cuestiones relacionadas