İçeriğe atla
TubePress — ücretsiz, kendi sunucunda & aktif olarak geliştirilen
Geliştirici referansı

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

MetotKullanı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.

Sayfa dilimi ile çakışmaktan kaçının. /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.

Canlı demoyu deneyin → TubePress'i indirin →