Ben Kohana kurulum yolları sadece belli HTTP yöntemleri Maç Can (GET / POST / etc)

3 Cevap php

Ben bir kaç PHP çerçeveleri keşfetmeye çalışıyorum ve mevcut ön koşucu Kohana olduğunu.

Ben raylar topluluk "dinlendirici" rotalar dediği için kullanılan oldum Rails arka plan olması. Yani "GET / mesaj" tüm mesajlarını görüntüler ve Mesajlar Controller indeksleme yöntemi tarafından işlenir. A "POST / mesaj" sonrası yeni bir nesne oluşturur ve Mesajlar Controller farklı bir yöntem tarafından işlenir.

Bu iki 2 istekleri yolu aynı olduğundan, yönlendirici HTTP yöntemi dayalı kararlar gerekiyor.

Kohana yılında yönlendirici bunu yapabilecek mi?

3 Cevap

Kohana varsayılan sığınakta yolları desteklemiyor, ama bunun için destek ekler bir RESTful modülü var. Kullanım için RESTful wiki bakınız.

Kohana v3.x doğrudan sığınakta kontrolörleri destekler. Sadece Controller_REST yerine Controller uzanan ve tüm rota eylem istek yöntemi olacaktır. (A POST talep action_post, vb hedeflenebilir olurdu)

Ayrıca Kontrolörün önce () yöntemi şu satırları ekleyebilirsiniz:

if ($this->request->method() == "POST")
{
  $this->request->action("post_".$this->request->action());
}

POST / denetleyici / mesaj action_post_posts () metodu tarafından ele alınacaktır ise yani / denetleyici / mesaj, sizin denetleyicisi action_posts () metodu tarafından ele alınacaktır GET.

PS: Yerleşik Controller_REST Kohana 3.2 çıkarıldı

Sınıf oluşturucu HTTP yöntemi denetleme bana kötü tasarım gibi hissediyor. Raylar gibi, Kohana 3,3 (ait oldukları) yönlendirici sığınakta yolları oluşturabilirsiniz.

Kohana 3.3 Route Filters için belgelerine göz atın.

İşte bir örnek:

Route::set('Posts', 'posts/<id>', array('id' => '\d+'))
  ->filter(function($route, $params, $request) {
    $params['action'] = strtolower($request->method());
    return $params;
  })
  ->defaults(array(
    'controller' => 'Post',
  ));