Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Dinamikus útválasztás Symfony2-ben

No description
by

Mátyás Somfai

on 29 August 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Dinamikus útválasztás Symfony2-ben

Dinamikus útválasztás Symfony2-ben
Somfai Mátyás

2013. 08. 29.
A Symfony beépített útválasztója
Első cél
Routing megvalósítása egy olyan entitáshoz, ami:
adminisztrálható
korlátozásmentes hierarchikus szerkezet
egyedi slug-ok

Eszközök
https://github.com/l3pp4rd/DoctrineExtensions
Tree - this extension automates the tree handling process and adds some tree specific functions on repository. (**closure**, nestedset or materialized path)
Translatable - gives you a very handy solution for translating records into diferent languages. Easy to setup, easier to use.
Sluggable - urlizes your specified fields into single unique slug
Timestampable - updates date fields on create, update and even property change.
Blameable - updates string or reference fields on create, update and even property change with a string or object (e.g. user).
Loggable - helps tracking changes and history of objects, also supports version managment.
Sortable - makes any document or entity sortable
Translator - explicit way to handle translations
Softdeleteable - allows to implicitly remove records
Uploadable - provides file upload handling in entity fields
References - supports linking Entities in Documents and visa versa
Második cél
több típusú entitás
együtt vagy külön is generálhatnak útvonalakat
semelyik két útvonal nem ütközhet
1. Doctrine2 behavioral extensions
2. Validáció
Azonos szinten levő elemek slugja különböző kell hogy legyen.
Első megoldás
Egy közös validátor kötése a kívánt entitásokra,
amelynek feladata, hogy biztosítsa az ütközésmentességet.
Probléma
Ha nincs egyedi prefixszel ellátva az összes így generált útvonal, akkor még mindig lehet ütközés bármely hagyományos útvonallal. (Pl. /admin)
Második megoldás
Symfony CMF ChainRouter
saját route provider
a hagyományos útvonalakkal sem
http://www.meetup.com/sfugbp/events/132505742/
Cachelés
sok entitás - sok overhead
listenerek - további overhead
Route cache
Köszönöm a figyelmet!
somfai.matyas@netpositive.hu
AllowedSlugValidator
1. Cache feltöltés
2. Cache érvénytelenítés
YAML, XML, PHP, annotáció
helyőrzők (placeholder)
követelmények (requirement)
speciális paraméterek
route: egy URL leképezése egy kontrollerre
könnyű URL-generálás
kontrollerben
twig template-ben
js-ben (FOSJsRoutingBundle)

debuggolás

nem dinamikus (konfig, annotáció)
http://symfony.com/doc/current/book/routing.html
2.1. Automatikusan generált
Sluggable használatával
automatikus postfixeléssel:
utkozo-slug
utkozo-slug-1
prePersist, preUpdate Doctrine eseménykezelőkkel
2.2. Felhasználó által megadható
Saját validátor írása, ami elvégzi a slugok vizsgálatát
A Symfony routing szervízében lévő útvonalakat is vizsgálni kell.
Validátor kibővítése
Matcher
Traces
Ha már úgyis használjuk a Symfony routing szervízét a validációnál, ésszerűbb lenne, ha a dinamikusan generált route-okat is ott tárolnánk!
http://symfony.com/doc/current/cmf/components/routing.html
Route-ok betöltése
Routing bejegyzések generálása
Validátor módosítása
Full transcript