"Enter"a basıp içeriğe geçin

Route / Rota İşlemleri

Projenizde route işlemlerini /PHPXI/APPLICATION/Route/Web.php dosyasında gerçekleştirebilirsiniz.

Route işlemlerine geçmeden önce yer tutucularımızı tanıyalım;

:str veya {string} – Alfabetik ve tam sayı değerleri kabul eder.
:id veya {int} – Tamsayı değerleri kabul eder.
:any – Tüm karakter ve noktalama işaretlerini kabul eder.

Bu yer tutucular url içerisinde “/” ile ayılmak zorundadır.

Route oluşturma işlemine geçmeden bilmeniz gereken bir diğer şeyde REQUEST metotlarıdır. Bazı sayfalara ulaşmak için bir şeylerin POST edilmiş olmasını ya da tam tersi edilmemiş olmasını isteyebilirsiniz. Yada bir şeyler POST edilmiş olsun veya olmasın çalışmak istiyor olabilirsiniz.
Bu işlem için kullanacağımız 3 fonksiyon bulunuyor: get(), post() ve any()

get() – Sadece POST işlemi olmaması (yani GET olması) durumunda çalışır.
post() – Sayfa sadece POST ile isteniyorsa çalışır.
any() – POST ya da GET fark etmeksizin çalışır.

Bu fonksiyonlar 2’si zorunlu olmak üzere toplamda 3 parametre alarak çalışırlar.
– Birinci parametre olarak url yolu
– Kontrolcü (Controller) ve Metot adı yada çalıştırılabilir bir fonksiyon.
– Üçüncü parametre olarak bir dizi halinde Route’a uygulanacak işlemler belirtilebilir. Belirtilmez ise ekstra bir işlem yapılmaz.

Route::get("/url", "ControllerName@FunctionName");

Ziyaretçi http://www.example.com/url adresine ulaşmak istediğinde ControllerName adındaki kontrolcü açılır ve içindeki FunctionName isimli metodu çalıştırılır. ControllerName ile FunctionName @ işareti ile ayrılmak zorundadır.
bkz: Kontrolcülerin Kullanımı

Ziyaretçinin sadece POST işlemi yaparak ulaşmasını istediğiniz bir adres varsa;

Route::post("/url", "ControllerName@FunctionName");

şekilde tanımlanır. Böylece ziyaretçi bir POST işlemi yapmadığı sürece http://www.example.com/url adresini görüntüleyemez. Bunun yerini bir 404 hatasıyla karşılaşır.

Bazı durumlarda hem POST hem de GET metoduyla ulaşılması gereken bir sayfanız olabilir.

Route::any("/url", "ControllerName@FunctionName");

Artık ziyaretçi bu sayfaya POST ile bir şey gönderse de göndermese de ulaşabilir durumda olacaktır.


Yer Tutucuların Kullanılması

Yer tutucular url yapılarında değişkenlik gösterebilen bölümleri geçici olarak dolduran özel tanımlamalardır.

Örneğin;

Route::get("/profile/:id/:str", "UserController@profile");

Ziyaretçi http://www.examples.com/profile/694/safak şeklinde bir url adresini görüntülemek istediğinde UserController isimli kontrolcü çağırılacak ve içerisindeki profile metoduna iki parametre gönderilerek çalıştırılacaktır.

namespace Application\Controller;
class UserController{
    public function profile($id, $username){
        echo $username . " (".$id.")";
    }
}

Bu örneğin çıktısı;

safak (694)

şeklinde olacaktır.


Filtre Uygulama

Config/Filters.php tanımladıklarınız dışında sadece bir sayfaya özel bir filtre oluşturup bunu Route sırasında tanımlamanız mümkündür. Tek yapmanız gereken uygulamak istediğiniz filtrenin adını üçüncü parametrede bir dizi elamanı olarak belirtmektir.

Route::get("/url", "ControllerName@FunctionName", ["filter" => ["myFilter"]]);

Böylece ziyaretçi http:://www.example.com/url adresini görüntelemek istediğinde myFilter isimli filtreden başarılı bir şekilde geçmesi gerekecektir.

Burada belirtilen filtreler Config/Filters.php yapılandırmasında belirtilen filtrelerden sonra uygulanır.

Birden fazla filtre uygulamak için; üçüncü parametredeki “filter” dizisine yeni eleman olarak filtre isimleri eklenebilir. Örneğin;

Route::get("/url", "ControllerName@FunctionName", ["filter" => ["myFilter", "xFilter"]]);

Uri Öğrenme

Bazı durumlarda tüm bu işlemlerden bağımsız olarak ziyaretçinin talep ettiği urlin patinden sadece belli bir dizini almak isteyebilirsiniz. Bu işlem için uri() metodunu kullanabilirsiniz. Örneğin

http:://www.example.com/project/profile/username/post-seo-link

PHPXI root dizinde değil de bir alt dizin olan “project” üzerinde yürütülüyor.

Route::uri(0); //return "profile"
Route::uri(1); //return "username"
Route::uri(2); //return "post-seo-link"