Yönlendirme
TubePress Router API'si: ön yüz, yönetici ve API yollarının nasıl kaydedildiği, eşleştirildiği ve sevk edildiği; rota parametreleri ve HTTP yöntemleri dahil.
TubePress, statik Router sınıfı etrafında oluşturulmuş küçük ve hızlı bir yönlendirici kullanır. Denetleyiciler rotalarını ::routes() metodu içinde kaydeder ve public/index.php, isteği göndermeden önce bu metotları çağırır. Bu sayfa, bir eklentiden rota eklemeniz veya isteklerin nasıl eşleştirildiğini anlamanız için ihtiyacınız olan her şeyi kapsar.
Rota kaydetme
Bir rotayı Router::get() veya Router::post() ile kaydedin. İşleyici, bir closure ya da [Class, 'method'] çifti gibi her türlü callable olabilir.
// Closure handler
Router::get('/promo', function () {
ThemeRenderer::render('promo', ['deal' => 'Summer']);
});
// Controller handler
Router::post('/promo/claim', [PromoController::class, 'claim']);Geleneksel olarak her denetleyici, tüm rotalarını kaydeden statik bir routes() metodu sunar ve bu metot başlatma sırasında bir kez çağrılır:
class PromoController
{
public static function routes(): void
{
Router::get('/promo', [self::class, 'show']);
Router::post('/promo/claim', [self::class, 'claim']);
}
}Rota parametreleri
Yolda {name} yer tutucuları kullanın; her biri tek bir URL segmentiyle (/ dışındaki her şeyle) eşleşir. Değeri Router::param() ile okuyun.
Router::get('/promo/{code}', function () {
$code = Router::param('code'); // required
$ref = Router::param('ref', 'direct'); // with a default
// …
});Dahili olarak /promo/{code} gibi bir desen, (?P<code>[^/]+) regex'ine derlenir; dolayısıyla parametreler hiçbir zaman eğik çizgileri kapsamaz. Tam rotalar önce eşleştirilir, ardından parametreli olanlar kayıt sırasına göre değerlendirilir.
Yanıt gönderme
| Metot | Kullanım |
|---|---|
ThemeRenderer::render($tpl, $data) | Etkin tema aracılığıyla bir ön yüz sayfasını işler. |
Router::render($tpl, $data) | Bir yönetici şablonu (templates/{$tpl}.php) işler. |
Router::json($data, $code = 200) | JSON yanıtı gönderir ve çıkar. |
Router::redirect($url) | Yönlendirme yapar (ve çıkar). Ön yüz URL'leri, etkin dil/tür ile otomatik olarak öneklenir. |
Rota sırası & genel yakalayıcı
Statik sayfalar bir /{slug} genel yakalayıcısı tarafından sunulur; dolayısıyla sayfa denetleyicisi public/index.php içinde diğer tüm ön yüz, yönetici ve API rotalarından sonra en sona kaydedilir. Başlatma sırasında bir eklentiden rota kaydederseniz bunlar genel yakalayıcıdan önce eklenir ve önce eşleştirilir.
/deals gibi bir eklenti rotası, /deals adresindeki statik bir sayfayı gölgeler. Güvenli olmak için eklenti rotalarını ad alanına alın (örneğin /promo/deals).CSRF koruması
Durum değiştiren her POST isteği CSRF korumasına sahip olmalıdır. Yönlendirici aşağıdaki yardımcıları sağlar:
// In your form template
<?= Router::csrfField() ?> // hidden input
// In your POST handler
if (!Router::verifyCsrf()) {
Router::json(['error' => 'Invalid token'], 403);
}verifyCsrf(), csrf_token POST alanından veya X-CSRF-Token başlığından gelen jetonu kabul eder ve hash_equals() ile karşılaştırır.
Yerelleştirilmiş & türlendirilmiş URL'ler
Çok dilli siteler için yönlendirici, bir dil önekini (/fr/… gibi) şeffaf biçimde işler ve bilinen rota dilimlerini çevirir; böylece /categorie/brunette, category rotasına çözümlenir. Yönetici ve kurulum rotaları bunun dışındadır — özel bir yolu önek uygulamasından çıkarmak istiyorsanız Router::addNoPrefixPath() ile kaydettirin. Tam davranış için Diller & çeviri bölümüne bakın. Router::langPrefix(), Router::typePrefix() ve Router::url() yardımcıları, herhangi bir yerel ayarda doğru bağlantılar oluşturmanızı sağlar.
Sonraki adımlar
Hâlâ takıldınız mı?
Kontrol panelinizden bir destek talebi açın, ekibimiz size yardımcı olacaktır.