POST?

2009-12-28 23 views
5

Arka uç uygulamam için PHP MVC şablonunu öğreniyorum. Bu mükemmel örnek aranıyor:POST?

PHP MVC Uygulanması:

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

Ben bir GET yürütme akışı rahat Kontrolör. Ancak, bir POST'ta ne olduğu hakkında hiçbir söz yoktur. POST için tipik denetleyici kodu ne yapar? Acaba bir şeyleri yanlış anladığımı merak ediyorum, çünkü önceki SO gönderilerinde veya Google'da benzer durumlar bulamıyorum. Örnek: Kişileri yönetmek için bir uygulama (isim, son, yaş) bir POST denetleyiciye vurduğunda db'ye kayıt eklemek ister. Bundan sonra ne olacak? Tahminimce 'Görünüm' hiç kullanılmıyor veya onay için mi? Sadece denetleyiciden db'ye kayıt ekleyen bir model sınıfına bir çağrı var mı? Veya denetleyiciyi bir POST için tamamen atlayıp doğrudan "kayıt ekle" komut dosyasına gidiyorum?

Uygun herhangi bir örnek var mı? peşin

sayesinde Ari

cevap

4

POST temelde GET ile aynıdır, yalnızca bazı bilgi istemcileri sunucuya gönderilir. Yani aynı şekilde tedavi edebilirsiniz.

PHP'de CodeIgniter MVC framework ile çalıştım. Denetleyiciye ve yöntemlerine yönlendirmek için GET URI kullanır. POST isteği geldiğinde, URI'sini aynı şekilde ele alır. Daha sonraki eylemler, POST istek verilerine doğrudan veya bir miktar sarıcı yoluyla erişen programcının elindedir ve ayrıca hiç kullanamaz.

Yanlış parçalara odaklandığınızı söylemeliyim. MVC her şeyin modeli değildir ve POST veya GET isteklerinin nasıl ele alınacağını söylemez. Sadece "MVC" isminin mantık, veri ve temsil ayrımı ilkesi olarak ünlendiğinden yıllar önce bilinen basit bir ilke. Ve çoğu yazılım (eskiden yeniye) aslında bu bölmeyi yapıyor, çünkü çoğu durumda bunu yapmamak çok zor. Bazı uygulamalarda, sınırlar o kadar belirgin değildir, hatta bazıları modele bile itiraz etmemektedir. Uygulamanın uygulaması her zaman size bağlıdır, çünkü MVC ne yazacağınızı söylemez, ancak sadece kodunuzun en üst düzey organizasyonu hakkında bazı ipuçları verir.

P.S. Kötü ingilizcem için özür dilerim.

+0

sayesinde çocuklar size tetiklemesi beklenen Yani URL ayrıştırma ve hangi kontrolör/yöntemini tanımlayan sonra, gibi bir şey yapabilir .Sorumu cevapladığımdan, bunu doğru cevap olarak işaretleyeceğim. Sadece daha önce bir masaüstü ortamında MVC ile çalıştığımı belirtmek isterdim, ama POST kısmı beni şaşırttı. Bir GET'e benzer şekilde davranmaya çalışacağım. Saygılar Ari – BeMeCollective

3

Genellikle, isteği (kontrolör süreçleri TÜM istekler), sonra aslında istek üzerine dayalı verileri işlemek için model haline diyoruz ve sonra ya bir yere yönlendirme işlemi ediyorum denetleyici else (yeni bir GET isteğini tetikleyerek) veya sonuçtaki bir sayfanın çıktısını almak için bir görünümü çağırır.

3

Eğer kendi MVC desen çözümünüzü oluşturacaksanız, zor bir şey yapabilirsiniz. MVC ile çalıştığınız için gerçekten güvenilir bir yönlendirme yöneticiniz olmalı.

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

ve daha sonra kontrolör sınıfında gibi bir şey yapabileceğini:

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

Lütfen burada txtspeak kullanarak kullanmaktan kaçının. "u", "r" ve "smth" kelimeleri değildir. – Charles

+2

Bir dahaki sefere tekrarlanmayacaksın, İngilizcem çok iyi değil ya da mesajımı kısaltmak için kullanıyorum –