Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ORO Meetup #4
Search
Oleg Zinchenko
February 22, 2016
Programming
86
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ORO Meetup #4
Frontend Validation
Oleg Zinchenko
February 22, 2016
More Decks by Oleg Zinchenko
See All by Oleg Zinchenko
Keep It Simple Security (Symfony Cafe 28-01-2016)
cystbear
0
130
Erlang (GeekTalks)
cystbear
0
82
Clojure basics
cystbear
0
89
Welcome to Erlang
cystbear
0
100
Erlang/N2O KNPMeetup
cystbear
0
170
Symfony Best Practices and beyond
cystbear
1
240
DDD on example of Symfony (SymfonyCamp UA 2014)
cystbear
3
930
MongoDB KNPLabs GeekTime
cystbear
1
95
DDD in PHP, on example of Symfony
cystbear
10
4.6k
Other Decks in Programming
See All in Programming
Vite+ Unified Toolchain for the Web
naokihaba
0
370
JavaDoc 再入門
nagise
1
430
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
420
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
560
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
800
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
220
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
650
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
7
1.5k
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
770
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4.2k
act1-costs.pdf
sumedhbala
0
130
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
140
Featured
See All Featured
Unsuck your backbone
ammeep
672
58k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
How to Talk to Developers About Accessibility
jct
2
270
Between Models and Reality
mayunak
4
360
Faster Mobile Websites
deanohume
310
32k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
860
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
A Soul's Torment
seathinner
6
3k
Transcript
None
cystbear Erlanger Symfony expert MongoDB adept OSS doer https://twitter.com/1cdecoder https://github.com/cystbear
http://trinity.ck.ua/
Frontend Validation
None
No time for REST
Validation <?php namespace AppBundle/Entity/Author; use Symfony\Component\Validator\Constraints as Assert; class Author
{ /** * @Assert\NotBlank() */ public $name; }
Twig Rendering {# app/Resources/views/default/new.html.twig #} {{ form_start(form) }} {{ form_errors(form)
}} {{ form_row(form.task) }} {{ form_row(form.dueDate) }} {{ form_end(form) }}
None
UberFrontendValidationBundle
Installation composer require sleepness/uber-frontend-validation-bundle $bundles = array( new Sleepness\UberFrontendValidationBundle\SleepnessUberFrontendValidationBundle(), );
twig: form_themes: - 'SleepnessUberFrontendValidationBundle:Form:fields.html.twig' {{ validation_init() }} jQuery
None
Result <div> <label for="advert_title" class="required">Title</label> <input type="text" id="advert_title" name="advert[title]" data-message-notblank="This
value should not be blank." data-constraint="NotBlank" /> </div>
Result-2 <div> <label for="advert_title" class="required">Title</label> <input type="url" id="advert_title" name="advert[title]" data-message-notblank="This
value should not be blank." data-message-url="This value is not a valid URL." data-constraint="NotBlank Url" /> </div>
Sleepness https://github.com/Sleepness/UberFrontendValidationBundle
Q? A!
None