# Koşullu mantık

Yanıtlara göre göster, gizle, zorunlu kıl ve dal oluştur.

## Koşullu mantık

Mantık blokları, yanıtlayanın girdiği bilgilere tepki verir — herhangi bir bloğu gösterir veya gizler, sayfalara atlar, gönderimi engeller ya da değerleri hesaplar. Basit kuralları kod yazmadan karmaşık dallara yayılan yapılara dönüştür.

<h2 id="what-logic-can-do">Mantık ne yapabilir</h2>

<p>
  Her mantık bloğunun bir veya daha fazla <strong>kuralı</strong> vardır. Her kural, bir <em>koşul grubunu</em> (ne zaman çalışmalı?) bir
  veya daha fazla <em>eylemle</em> (ne olmalı?) eşleştirir. Dokuz eylem türü mevcuttur:
</p>

<h2 id="adding-a-logic-block">Mantık bloğu ekleme</h2>

<p>
  Mantık bloğu bir belge öğesidir — bir başlık veya görsel gibi, tuval üzerinde sorular arasında bulunur. İstediğin yere yerleştirebilirsin:
  aynı sayfadaki iki alan arasına, sayfanın başına veya sayfa sonu öncesine.
</p>

<h2 id="conditions">Koşullar</h2>

<p>
  Koşullar, bir kuralın <strong>Ne zaman</strong> tarafıdır. Her koşul bir <strong>alan</strong> seçer, bir <strong>işleç</strong> uygular
  ve çoğunlukla bir <strong>değerle</strong> karşılaştırır. Alan seçici, izleyebileceklerini gruplandırır: <strong>Sorular</strong>,{' '}
  <strong>Gizli Alanlar</strong>, <strong>Hesaplanan Alanlar</strong> ve <strong>Meta Veri</strong> (bugün için, yanıtlayanın dili).
</p>

<h3 id="all-or-any">Tümü mü Herhangi Biri mi</h3>

<p>Bir kuralın iki veya daha fazla koşulu olduğunda, Ne zaman bölümünün üstünde bir geçiş belirir:</p>

<ul>
  <li>
    <strong>Tümü</strong> — kuralın çalışması için her koşulun doğru olması gerekir. Satırlar "ve" okunur.
  </li>
  <li>
    <strong>Herhangi Biri</strong> — tek bir doğru koşul yeterlidir. Satırlar "veya" okunur.
  </li>
</ul>

<h3 id="sets-of-conditions">Koşul setleri</h3>

<p>
  <strong>Bir koşul seti ekle</strong>, ilkinin içine tek düzey derinliğinde, kendi Tümü/Herhangi Biri geçişine sahip ikinci bir grup
  yuvalar. Bu, "plan <strong>şuna eşit</strong> Pro <em>ve</em> (ülke <strong>şuna eşit</strong> Norveç <em>veya</em> ülke{' '}
  <strong>şuna eşit</strong> İsveç)" gibi bileşik mantığı kapsar. Bir set yalnızca koşul tutar — başka bir set tutamaz.
</p>

> ⚠️ **Gizli bir sorunun değeri yoktur**
> <p>
>     Mantık bir soruyu gizlerse, o sorunun halihazırda tutuyor olabileceği yanıt hiçbir şey ifade etmez — ne koşullarda, ne hesaplamalarda,
>     ne ödeme tutarında ne de kaydedilen gönderimde. Yanıt, yalnızca soru tekrar görünür hale geldiğinde geri gelir. Aynısı gizli bir satır,
>     sütun veya tekrarlayan grup içindeki her soru ve mantığın gizlediği seçili bir seçenek için de geçerlidir. Sonraki sayfayı ayarla
>     kurallarının atladığı bir sayfa da gizli sayılır: oradaki sorular zorunlu değildir ve orada verilen yanıtlar atılır. Gizli{' '}
>     <em>alanlar</em> bunun tam tersidir: değerlerini her zaman taşırlar.
>   </p>

> 💡 **Okunabilir tut**
> <p>
>     Tek bir mantık bloğu çok karmaşık görünüyorsa, mantığı birden fazla mantık bloğuna bölmeyi veya form sayfalarını yeniden yapılandırmayı
>     düşün.
>   </p>

<h2 id="operators-reference">İşleçler referansı</h2>

<p>
  İşleç listesi, seçtiğin alana göre belirlenir — yalnızca o alanın desteklediği işleçleri görürsün. Aşağıda her başlık, tam kümeyi
  adlandırır.
</p>

<h3 id="text-text-input-text-area-and-text-calculated-fields">Metin (Metin Girişi, Metin Alanı ve metin hesaplanan alanları)</h3>

<p>
  Her metin karşılaştırması büyük/küçük harfi ve baştaki ve sondaki boşlukları yok sayar; yani <code>x@Competitor.com</code>,{' '}
  <code>@competitor.com</code> ile biter.
</p>

<p>Diğer metin benzeri girişler daha dar bir küme taşır, bu yüzden karşılaştırma ihtiyacına uyan türü seç:</p>

<h3 id="numeric-number-star-rating-linear-scale-numeric-hidden-and-calculated-fields">
  Sayısal (Sayı, Yıldız Değerlendirme, doğrusal ölçek, sayısal gizli ve hesaplanan alanlar)
</h3>

<h3 id="checkboxes-and-picture-choice">Onay Kutuları ve görsel seçim</h3>

<h3 id="dropdown-and-radio-buttons-single-select">Açılır Menü ve Radyo Düğmeleri (tek seçim)</h3>

<h3 id="toggle-switch-and-boolean-calculated-fields">Geçiş Anahtarı (ve boolean hesaplanan alanlar)</h3>

<h3 id="signature">İmza</h3>

<h3 id="file-upload">Dosya Yükleme</h3>

<h3 id="date-picker-and-time-picker">Tarih Seçici ve Saat Seçici</h3>

<h3 id="ranking">Sıralama</h3>

<h3 id="matrix--grid">Matris / Izgara</h3>

<h3 id="payment">Ödeme</h3>

<h3 id="fields-you-cannot-watch">İzleyemeyeceğin alanlar</h3>

<p>
  <strong>Randevu planlama</strong> ve <strong>Belgeler</strong> görünürlük hedefi olabilir ama asla koşul kaynağı olamaz. Bir rezervasyon,
  sıradan bir yanıt olarak değil gönderime bağlı olarak saklanır ve bir Belgeler bloğu hiçbir yanıt toplamaz. İkisini de göstermek veya
  gizlemek için daha önceki yeterlilik yanıtlarını kullan. Görünür her Randevu planlama sorusu gönderimden önce rezerve edilmelidir; gizli
  biri bunu engellemez. Bkz. <a href="/tr/integrations/cal-com#logic">Mantıkla Cal.com randevu planlama</a>.
</p>

<h2 id="targeting">Hedefleme</h2>

<p>
  Her eylemin bir <strong>hedefi</strong> olması gerekir — eylemin üzerinde çalıştığı şey. Hedef, eylem türüne göre değişir:
</p>

<p>
  Göster ve Gizle soruların ötesine geçer. Varsayılan olarak gizlenmiş bir notu görünür kılmak ya da artık ilgili olmayan içeriği gizlemek
  için tuvaldeki herhangi bir bloğu — bir paragraf, başlık, görsel veya düzen kapsayıcısını — hedef al. Ayrıca yalnızca tüm soruyu değil,
  seçim alanı içindeki bireysel seçenekleri de hedef alabilirler. Önce bloğu blok menüsünden Gizle ile gizle, ardından onu görünür kılmak
  için bir kural yaz.
</p>
<h2 id="how-rules-combine">Birden fazla kural nasıl birleşir</h2>

<p>
  Her kural bağımsızdır ve hepsi birlikte değerlendirilir. Kurallar, mantık blokları boyunca yukarıdan aşağıya, belge sırasına göre okunur.
  Bir hedefteki birden fazla kuralın nasıl birleşeceği eyleme bağlıdır.
</p>

<p>
  Bu sayede birden fazla kuralı aynı bloğa, çakışma olmadan yönlendirebilirsin. Bir geri bildirim formu, "Size nasıl yardımcı olabiliriz?"
  adlı dört seçenekli bir Radyo Düğmeleri sorusu içeriyor ve varsayılan olarak gizlenmiş bir "Sizi arayabilir miyiz?" e-posta alanı var.
  Dört kuralın her biri kendi seçeneği için aynı e-posta alanını (ve o seçeneğe özgü takip sorusunu) <strong>Göster</strong> yapıyor.
  E-posta alanı hangi seçenek seçilirse seçilsin görünür; yalnızca hiçbiri seçilmediğinde gizli kalır.
</p>

> 💡 **Çoğunlukla tek bir kural yeterlidir**
> <p>
>     Bir bloğu birkaç yanıt için göstermek için, <strong>Herhangi Biri</strong> ile her yanıt için bir koşul içeren tek bir kural — ya da
>     hepsini kapsayan tek bir <strong>boş değil</strong> koşulu — dört kuraldan daha kolay okunur. Her seçeneğin kendine özgü bir takip
>     sorusu da gerektirdiği durumlarda birden fazla kurala başvur.
>   </p>

<h3 id="conflicting-rules">Çakışan kurallar</h3>

<p>
  İki kural aynı hedef üzerinde anlaşmazlığa düştüğünde — biri bir bloğu <strong>Göster</strong> yaparken diğeri <strong>Gizle</strong>{' '}
  ederse ya da biri bir alanı zorunlu kılarken diğeri isteğe bağlı yaparsa — ve her iki koşul da aynı anda eşleşirse,{' '}
  <strong>ilk kural kazanır</strong>. Geç kalan, kaybeden kural editörde şöyle işaretlenir: "Bu eylem hiçbir zaman uygulanmaz — hedefini
  daha önceki bir kural zaten kontrol ediyor. Kural sırası belirleyicidir: ilk kural kazanır."
</p>

<p>
  Sıralamanın bir istisnası var: koşulu bir hesaplanan alanı okuyan bir kural, belge sırası ne olursa olsun, onu yazan kuraldan sonra
  çalışır, böylece bir puan her zaman ona dayanan herhangi bir dallanmadan önce hesaplanır. Birbirinin hesaplanan alanlarını döngü içinde
  yazan kurallar, zinciri adlandıran bir yayınlama uyarısı yükseltir — değerlerin öngörülebilir şekilde hesaplanması için döngüyü kır.
</p>

<h3 id="hidden-and-required">Gizli olan, zorunlunun önüne geçer</h3>

<p>
  Sonunda gizli kalan bir soru asla zorunlu değildir — ister bir kuralla gizlenmiş olsun, ister onu görünür kılacak hiçbir kural olmadan
  blok menüsünden gizlenmiş olsun. Yıldız işareti kaybolur ve gönderim engellenmez — aksi hâlde bir yanıtlayan, göremediği bir alan yüzünden
  formdan kilitlenebilirdi.
</p>

<h2 id="common-patterns">Yaygın kalıplar</h2>

<h3 id="show-a-follow-up-question-based-on-a-previous-answer">Önceki yanıta göre takip sorusu gösterme</h3>

<p>
  Bir memnuniyet anketi "Deneyiminizi nasıl değerlendirirsiniz?" sorusunu 1-5 Yıldız Değerlendirme ile soruyor. Altındaki mantık bloğu
  "rating şundan küçük veya eşit 3" koşulunu kullanarak "Neyi iyileştirebiliriz?" soran bir Metin Alanı alanını <strong>Göster</strong>{' '}
  eylemiyle hedef alıyor. 4 veya 5 puan veren yanıtlayanlar takip sorusunu hiç görmüyor.
</p>

<h3 id="reveal-a-message-when-an-option-is-picked">Bir seçenek seçildiğinde mesaj gösterme</h3>

<p>
  Bir kayıt formunda şu Radyo Düğmeleri sorusu var: "Hangi plan sana en uygun?" Altında bir paragraf bulunuyor — "İyi seçim! Pro planımız
  öncelikli desteği içerir." — blok menüsündeki <strong>Gizle</strong> ile varsayılan olarak gizlenmiş. Bir mantık bloğu onu görünür
  kılıyor: plan <strong>şuna eşit</strong> "Pro" ise paragrafı <strong>Göster</strong>. Bu teşvik edici not yalnızca Pro seçenler için
  görünür, diğer herkes için gizli kalır.
</p>

<h3 id="branch-to-different-pages-based-on-a-selection">Seçime göre farklı sayfalara dallanma</h3>

<p>
  Bir etkinlik kayıt formu şu Radyo Düğmeleri sorusuna sahip: "Yüz yüze mi yoksa uzaktan mı katılıyorsunuz?" Ardından iki mantık bloğu
  geliyor:
</p>

<ul>
  <li>
    <strong>Kural 1</strong> — koşul: katılım <strong>şuna eşit</strong> "Yüz yüze", eylem: <strong>Sonraki sayfayı ayarla</strong> "Mekan
    detayları".
  </li>
  <li>
    <strong>Kural 2</strong> — koşul: katılım <strong>şuna eşit</strong> "Uzaktan", eylem: <strong>Sonraki sayfayı ayarla</strong> "Yayın
    kurulumu".
  </li>
  <li>
    <strong>Kural 3</strong> — koşul: varış saati <strong>boş değil</strong>, eylem: <strong>Sonraki sayfayı ayarla</strong> "Onay". Varış
    saati, "Mekan detayları" sayfasındaki zorunlu bir sorudur.
  </li>
</ul>

<p>
  Kural 1 ve 2 katılım sorusunu okur, bu yüzden yanıtlayan o sayfadan ayrıldığında etkili olurlar. Bundan sonra İleri, sayfa sırasında
  ilerler. Kural 3, "Mekan detayları" sayfasındaki bir soruyu okur, bu yüzden yanıtlayan o sayfadan ayrıldığında etkili olur. Yüz yüze
  katılanlar böylece "Yayın kurulumu"nu atlar. Her yol yalnızca ilgili bilgileri toplar, ardından her ikisi de ortak bir "Onay" sayfasında
  birleşir.
</p>

<h3 id="calculate-a-score-and-branch-on-it">Puan hesaplama ve buna göre dallanma</h3>

<p>
  Bir potansiyel müşteri değerlendirme formu üç Yıldız Değerlendirme sorusuna sahip: bütçe, zaman çizelgesi ve yetki. "Müşteri puanı" adlı
  hesaplanan alan, <strong>Değeri hesapla</strong> eylemiyle her derecelendirmenin değerini toplayan bir mantık bloğu kullanıyor. İkinci bir
  mantık bloğu hesaplanan alanı okuyor: Müşteri puanı <strong>şundan büyük</strong> 12 ise <strong>Sonraki sayfayı ayarla</strong>{' '}
  "Öncelikli takip"; aksi hâlde standart onay sayfasına atla.
</p>

<h3 id="react-to-a-hidden-field-value">Gizli alan değerine tepki verme</h3>

<p>
  URL, <strong>plan</strong> adlı gizli bir alanı dolduruyor (örn. <code>?plan=enterprise</code>). Bir mantık bloğu şunu kontrol ediyor:
  plan <strong>şuna eşit</strong> "enterprise" ise "Özel hesap yöneticisi" sorusunu <strong>Göster</strong> ve "Şirket büyüklüğü" alanını{' '}
  <strong>Zorunlu yap</strong>. Ücretsiz katman yanıtlayanları bu soruları hiç görmüyor.
</p>

<h3 id="gate-submission-on-a-calculated-total">Hesaplanan toplama göre gönderimi kısıtlama</h3>

<p>
  Bir sipariş formu anlık toplam hesaplıyor. Mantık bloğu şu koşulu kullanıyor: Sipariş toplamı <strong>şundan küçük</strong> 10 ise{' '}
  <strong>Form gönderimini engelle</strong>. Minimum sipariş eşiği karşılanana kadar yanıtlayan gönderemiyor.
</p>

<p>
  Bir engelleme kuralı etkinken düğme kullanılamaz görünür ve yanıtlayana nedeni söylenir. Hangi yanıtı değiştireceklerini bilmeleri için
  nedeni eylem satırındaki <strong>Katılımcıya gösterilen mesaj</strong> alanına yaz — örneğin "Siparişiniz en az 10 olmalıdır". Boş
  bırakırsan form "Bu form, mevcut yanıtlarla gönderilemez." mesajına döner (bir gezinme bloğu için "Mevcut yanıtlarla bir sonraki sayfaya
  devam edemezsiniz."). Birden fazla engelleme kuralı aynı anda tetiklendiğinde, mesaj taşıyan ilk kural metni sağlar.
</p>

> 💡 **Mantığı Önizleme ile test et**
> <p>
>     Kurallarını ayarladıktan sonra üst araç çubuğundaki <strong>Önizle</strong> moduna geç ve formu bir yanıtlayan gibi doldur. Mantık,
>     Önizleme’de gerçek zamanlı çalışır; böylece yayınlamadan önce her dalı, gizli alanı ve doğrulama kapısını doğrulayabilirsin.
>   </p>

<h2 id="next-steps">Sonraki adımlar</h2>
<div class="not-prose grid gap-3 sm:grid-cols-2">
  - [Gizli alanlar](/tr/building-forms/hidden-fields) — URL parametrelerini yakala ve mantıkta kullan
  - [Hesaplanan alanlar](/tr/building-forms/calculated-fields) — Mantık işlemleriyle puanlar ve toplamlar hesapla
  - [Yanıt aktarma](/tr/building-forms/answer-piping) — Herhangi bir yanıtı formun başka yerinde kullan
</div>
