Ana içeriğe geç

İstek Parametreleri

Bu dokümantasyon, Serenay\B2B\Helpers\Request sınıfının Twig şablonlarına request global değişkeni olarak sunduğu alanları ve metodları içerir.

Class Path: application/src/Helpers/Request.php

Diğer *-data-attributes.md dosyalarındaki (Product, Order, Category, Brand) nesnelerden farkı: Request bir BaseData/veritabanı satırı değildir, statik bir yardımcı sınıftır ve anlık HTTP isteğinin bilgilerini tutar.

request Değişkeninin İki Farklı Şekli

BağlamKaynakTwig'de tipNot
Ana tema ve Twig widget şablonlarıSerTwig::getGlobals()'request' => request()dizi (array)application/src/Repo/SerTwig.php:49; Twig ile render edilen widget'lar da bu global'i görür
PHP View tipi widgetrequest değişkeni view'e aktarılmaz; PHP tarafında request($key) ile okunur
Widget "Gösterim Koşulu" (show_if) ifadesicheckIsShow() (Widget, ProductList, ProductListCarousel) → Symfony ExpressionLanguagestdClass (Request::all_object())request.page_type == 'product' gibi koşullarda kullanılır; Twig {{ }} sözdizimi DEĞİL
PHP tarafı (controller/widget)request($key) / request($key, $value) global fonksiyonuapplication/src/HelperFunctions/ui_helper.php:443

Request::all_object() yalnızca show_if değerlendirmesinde kullanılır; Twig şablonlarına giden request her zaman request()'in döndürdüğü dizidir. Twig'de dizi elemanına . ile erişilir (request.page_type).

Tüm İstek Özellikleri

🔍

Alan AdıArama KelimeleriTipAçıklamaTwig Kullanımı
design_modetasarım modu, design mode, builderboolAdmin görsel düzenleyicide (admin/Builder::index) true'ya set edilir; widget'ların show_if kontrolünü atlamasını sağlar{% if request.design_mode %}
hosthost, alan adı, domainstring$_SERVER['HTTP_HOST']{{ request.host }}
localedil, locale, languagestring$_SERVER['HTTP_ACCEPT_LANGUAGE'], yoksa get_lang(){{ request.locale }}
originorigin, kaynakstring$_SERVER['HTTP_ORIGIN']{{ request.origin }}
page_typesayfa tipi, page typestring|nullSayfa tipi (product, category, index, ...){{ request.page_type }}
pathyol, path, urlstring$_SERVER['REQUEST_URI']{{ request.path }}
visual_preview_modegörsel önizleme, preview modeboolTanımlı ama kod tabanında hiçbir yerde true set edilmiyor; şu an her zaman false{% if request.visual_preview_mode %}
is_mobilemobil mi, is mobileboolis_mobile() yardımcı fonksiyonu{% if request.is_mobile %}
methodmetod, method, http methodstring$_SERVER['REQUEST_METHOD']{{ request.method }}
queryquery, get, sorgu parametresiarray$_GET{{ request.query.sayfa }}
formform, postarray$_POST{{ request.form.email }}
payloadpayload, json body, gövdearray|string|int|float|bool|nullphp://input içeriğinin json_decode(..., true) sonucu; JSON nesne/dizi ise array, skaler ise ilgili skaler tip, boş/geçersiz gövdede null{{ request.payload.key }}

page_type dışındaki alanların çoğu koda hiçbir yerde set() ile açıkça yazılmaz; ilk okunduklarında resolve() üzerinden lazy hesaplanır ve Request::$properties içinde istek boyunca önbelleğe alınır (bkz. Public Metodlar).

PHP Kullanım Örnekleri

// Sayfa tipini bildir (controller)
request('page_type', 'product');

// Değeri oku
$type = request('page_type');

// Tüm alanları dizi olarak al
$all = request();

// İstemci IP'si (analytics/rate-limit)
$ip = \Serenay\B2B\Helpers\Request::ip();

Twig Kullanım Örnekleri

Sayfa tipine göre koşullu render (breadcrumb.twig.php)

{% if theme_config('category_show_breadcrumb') and request.page_type == 'category' and kategori %}
...
{% endif %}

Sepete ekle formunda gizli alan (add_to_cart.twig.php)

<input type="hidden" name="page_type" value="{{ request.page_type }}"/>

Widget gösterim koşulu (Builder "Gösterim Koşulu" alanı)

request.page_type == 'index' or request.is_mobile

Önemli Notlar

İki farklı tip

Twig şablonlarında (ana tema ve Twig widget'ları) request bir dizidir; yalnızca widget show_if ifadelerinde stdClass'tır (Request::all_object()). İkisinde de . erişimi çalışır; hiçbirinde metod çağrılamaz. PHP View tipi widget'a request hiç aktarılmaz, orada request($key) fonksiyonu kullanılır.

page_type opt-in'dir

Yalnızca yukarıdaki tabloda listelenen controller'lar bu alanı set eder; başka bir sayfada request.page_type ham REQUEST_URI değerine düşer.

  1. Veritabanı satırı değil: Request, BaseData'dan türemez; getFields(), save() gibi Data-katmanı metodları yoktur.
  2. visual_preview_mode şu an ölü alan: Varsayılan false'un hiçbir yerde true'ya çevrilmediği doğrulandı; yeni bir kullanım eklenene kadar bu alanı koşulsuz false kabul edin.
  3. Lazy + istek-başı önbellek: Request::get() bir alanı yalnızca ilk okunduğunda resolve() ile hesaplar ve $properties dizisinde tutar; aynı istek içinde tekrar okumak $_SERVER/$_GET gibi kaynaklara tekrar gitmez.
  4. Request::ip() güvenlik notu: X-Forwarded-For zinciri yalnızca istek DEFAULT_TRUSTED_PROXIES (loopback) veya TRUSTED_PROXY_IPS ortam değişkeniyle bildirilen bir proxy'nin arkasından geliyorsa dikkate alınır; aksi halde doğrudan REMOTE_ADDR döner.

Kaynaklar

İletişim ve Destek

Herhangi bir sorunla karşılaşırsanız veya yardıma ihtiyaç duyarsanız, destek ekibimizle iletişime geçebilirsiniz.