Článek blogu:

Kontaktní formulář

Vytvářet formuláře v OctoberCMS není taková pohoda jako v Nette. Ale díky pluginům si člověk může život s nimi výrazně usnadnit. Napsal jsem jeden univerzální pro kontaktní formuláře, které řeším téměř na každém webu.

  OctoberCMS .  Doba čtení: 1 min.

Už to bude pomalu rok, co jsem vyměnil Nette za OctoberCMS. Nelituji, i když občas střípu zubama, když mi chybí něco, co je u Nette naprostý standard a v Octoberu to chybí.

Jednou z takových věcí jsou formuláře.

Plugin Small Contact form

V OctoberCMS/Laravelu sice jsou nějaké prostředky na vytváření formulářů a jejich validaci, v porovnání s Nette Form je to ale jen hodně slabý čajíček :)

Proto jsem napsal tenhle plugin, který mi má práci s nejčastějším - kontaktním - formulářem trochu ulehčit.

Umí mimo jiné:

  • automaticky fungovat s AJAXem i bez něj (to mi u ostatních pluginů hrozně chybělo)
  • vytvářet libovolný formulář z vlastních polí
  • zobrazovat validační hlášky u konkrétního pole formuláře a zároveň tam nastavit kurzor
  • ukládat odeslaná data do databáze a zobrazovat je v seznamu
  • odesílat emailové notifikace a automatické odpovědi

Formulář s validační chybou

Vlastní formulářová pole

To vlastně byla úplně původní motivace - mít možnost skládat si každý (kontaktní) formulář tak, jak budu potřebovat.

Vybrat pole a jejich typy, popisky, CSS styly a validace a chybové hlášky a nemuset se o všechno starat ručně v metodách stránek.

Vše je maximálně jednoduché, takže kompletní formulář se dá poskládat v části Nastavení.

Form builder - naprostá volnost formulářových polí

Pasivní antispam

I když jsem teď nějaký čas používal reCaptchu od Google, přeci jen mi přijde řešení s pasivním antispamem daleko elegantnější (a pro návštěvníky určitě výrazně jednodušší).

Nevěřil bych, kolik lidí raději formulář neodešle, než by museli na reCaptcha obrázku určovat, co je "výloha" nebo "auto".

Vím, že to není 100% řešení, ale nedělám weby s mnohatisícovými návštěvnostmi. Důležité je, aby lidé data odesílali a nic jim nestálo v cestě.

Do pluginu jsem implementoval řešení inspirované komponentou Nette Antispam od Michala Mikoláše.

A funguje to spolehlivě :)