2017-05-11 101 views
7

CodeIgniter uygulamasının WordPress'e benzer şekilde çalışmasını sağlamaya çalışıyorum.CodeIgniter için Yönlendirme (: any)

Ben URL'lerin bu tür yapabilmek istiyorum:

http://www.example.com/my-post-example

http://www.example.com/new-headline-here

http://www.example.com/i-love-stackoverflow

Benim yönlendirme:

$route['(:any)'] = "core/index/$1"; 

benim Çekirdek arayacakdenetleyici ve sayfa adını dizin işlevine iletir.

Veritabanımda sayfa adı için arama yapıp sayfayı kullanıcıya görüntülerim. Çok uzak çok iyi. Bununla birlikte, başka bir denetleyici aramak istediğim zamanlar olacaktır. Örneğin:

http://www.example.com/admin/settings

http://www.example.com/admin/edit_page/3

Şimdi benim rota sadece tüm bu kuralları kapmak ve benim Core kontrol içine gönderir varsayalım. Belirli sayfalar için bir istisna yapmanın bir yolu var mı? Yoksa bu kontrolü Çekirdek denetleyicimde yapmak iyi bir fikirdir. Örneğin

,

if ($page not in DB) { 
    // Call controller/method 
} 

Sadece CodeIgniter bu işlemek istiyorum çünkü bu biraz gereksiz gibi görünüyor.

cevap

4

Kullandığınız yönlendirme kuralı, amacınız için sorun değil. Eğer http://www.example.com/admin/edit_page/3 bu bağlantıyı kullanıyorsanız

size admin denetleyicisi gönderir ve edit_page method.It yönlendirmektedir any kuralını kullanmaz. Bağlantı Bu my-post-example denetleyici ve test yöntemini gitmeye çalışacağız bu

http://www.example.com/my-post-example/test 

benziyor eğer bir problem alacak Ancak

.

http://www.example.com/admin, any numaralı kuralı kullanacaksınız, yani admin/index yerine çekirdek denetleyicinize yönlendirecektir. Eğer kontrolör/yöntem adıyla diğer bağlantı ararsanız o durumda Url'nizde sizin any kuralını

+0

Teşekkür kullanarak Tamam olacak Nihayet http://www.example.com/admin/index

olmalı! Herhangi bir URL modeliyle eşleşmenin bir yolu var mı?/Ile dahil olmak üzere Yani yönetici/edit/lol/çekirdek/dizine de gider miydi? Ya da her zaman (: any)/(: any)/(: any) eklemek zorunda mıyım? – Oliwol

+0

$ rotanızdan başka bir kural daha ekleyin ['(: any)'] = "core/index/$ 1"; 'rule' $ route ['admin/edit/lol'] = "core/index"; –

+0

Ne? Eğer herhangi bir veriyi işleve yönlendirmek istersem: admin/edit/lol => core/index ve ayrıca admin/new/test => core/index. Her bir kuralı eklemek daha iyi bir yol var mı?Gibi rota ['admin/(: any)/(: any)'] - ama sonsuza kadar bir 3., 4. ve 5. yukarı ekleme potansiyeline sahip. – Oliwol