PHP MVC Controller POST?

3 Cevap php

Benim arka uç uygulaması için PHP MVC deseni öğreniyorum. Bu mükemmel örneğe bakarak:

Implementing MVC in PHP: The Controller

http://onlamp.com/pub/a/php/2005/11/03/mvc%5Fcontroller.html

I feel comfortable with the execution flow in a GET. But there is no mentioning of what happens in a POST. What would the typical controller code for the POST do? I wonder if I am misunderstanding something obvious here, since I can't find similar situations in previous SO posts or Google.

For example: An app to manage persons,(name, last, age) wants to add a record to db when a POST hits the controller. What happens next? My guess is that the 'View' is not used at all, or maybe for confirmation? Is there just a call from the controller to a model class that adds a record to db? Or do I skip the controller altogether for a POST and go directly to an "add record" script?

Herhangi bir kullanılabilir bir örnek var mı?

Thanks in advance, Ari

3 Cevap

Eh, POST GET temelde aynıdır, bilgi istemci sadece bazı rastgele topakları sunucuya sended. Yani bunu aynı şekilde davranabilirsiniz.

PHP CodeIgniter MVC framework ile çalıştı. Bu denetleyici yönlendirmek için URI GET kullanır ve yöntemleri bulunuyor. POST isteği geldiğinde, aynı şekilde kendi URI davranır. Daha sonra eylemler POST isteği verileri doğrudan veya bazı wrapper aracılığıyla erişir programcı, elinde olan, ve o da bunu hiç kullanmamaktadır.

Ben yanlış parça odaklanmak olduğunu söylemek gerekir. MVC her şeyin model değildir, ve POST tedavi etmek veya GET istekleri nasıl demiyor. Bu "MVC" mantık, veri ve temsil bölme konusunda prensip olarak ünlü oldu yıllar adından önce bilinen basit bir ilkedir. Çoğu durumda bunu yapmak çok zor değil çünkü ve (eski den yeni) yazılımların çoğu aslında, bu yarma yapmak. Bazı uygulamalarda sınırlar bazıları bile nesne modeli değil, çok belirgin değildir. App uygulama MVC yazmak ne demek değil, çünkü sizin için her zaman olduğu gibi ama sadece size kod en üst düzey organizasyonu hakkında bazı ipuçları veriyor.

P.S. Benim kötü İngilizce için özür dilerim.

Tipik olarak, denetleyici isteği (kontrolör TÜM isteklerini işler) işlemek olur, sonra aslında istek dayalı verileri işlemek için model haline diyoruz, ve sonra (yeni bir GET isteğini tetikliyor) başka bir yere yönlendirmek, ya bir görünüm çağırmak Elde edilen çıkış sayfa.

Kendi MVC desen çözüm oluşturmak için gidiyoruz eğer Eh, bir zor şeyi yapabilir. Eğer MVC taşıma konum beri size gerçekten sağlam bir yönlendirme yöneticisi olması gerekiyordu. Yani URL ayrıştırma ve tetiklemek için gereken ne kontrolörü / yöntemi tanımlandıktan sonra, gibi bir şey yapabilir:

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

ve daha sonra denetleyici sınıfında gibi bir şey yapabilirsiniz:

<?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
    }

}