рдирдП, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдп Symfony2 рдврд╛рдВрдЪреЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдПрдХ рдХреЛрдб рдХреЗ рдЕрдиреИрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрдо рд╕реЗ рдХрдо рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЙрдирдХреЗ рдмрд┐рдирд╛, рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рджреВрд╕рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рднрдЯрдХрддреЗ рд╣реИрдВред рдПрдХ рд╕рд╛рде рдХрдИ рдРрд╕реЗ "рдЯреБрдХрдбрд╝реЗ" рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ ShtumiUsefulBundle рдмрдирд╛рдпрд╛, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдЖрдк рдмрдВрдбрд▓ рдХреЛ GitHub:
ShtumiUsefulBundle рдкрд░ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдмрдВрдбрд▓ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рд╡рд┐рдиреНрдпрд╛рд╕ рддреБрдЪреНрдЫ рд╣реИ рдФрд░
рд░реАрдбрдореЗ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИред рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреВрдБрдЧрд╛ред
рдСрдЯреЛ-рдлрд┐рд▓ рдлреЙрд░реНрдо рднрд░реЗрдВ
Symfony2 рдореЗрдВ рдПрдХ рдорд╣рд╛рди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЗрдХрд╛рдИ рдлрд╝реАрд▓реНрдб рд╣реИрдВ - рдПрдХ рдлрд╝реАрд▓реНрдб рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рд╣реЛрддреА рд╣реИ, рдЬреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕рд╛рде рдкреЙрдкреБрд▓реЗрдЯреЗрдб рд╣реЛрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдлреЙрд░реНрдо рдЬрдорд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЪрдпрдирд┐рдд рд░рд┐рдХреЙрд░реНрдб рдХреА рдЖрдИрдбреА рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИ, рдмрд▓реНрдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реА рд╣реЛрддрд╛ рд╣реИред рдмрд╣реБрдд рдЖрд░рд╛рдо рд╕реЗ! рдЖрд╕рд╛рдиреА рд╕реЗ, рдЬрдмрдХрд┐ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдЙрдЪрд┐рдд рд╕реАрдорд╛ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╣рдЬрд╛рд░реЛрдВ рд░рд┐рдХреЙрд░реНрдб рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдлрд╝реЙрд░реНрдо рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдиреБрдкрдпреБрдХреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рдСрдЯреЛ-рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд╕рд╛рде рдПрдХ рдкрд╛рда рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред ShtumiUsefulBundle рдЖрдкрдХреЛ рдРрд╕реЗ рдлрд╝реАрд▓реНрдб рдмрдирд╛рдиреЗ рдФрд░ рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдСрдЯреЛ-рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд╕рд╛рде рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝реАрд▓реНрдб рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджреЛ рд╣реИрдВ)ред
//app/config/config.yml
shtumi_useful: autocomplete_entities: users: class: AcmeDemoBundle:User role: ROLE_ADMIN property: email products: class: AcmeDemoBundle:Product role: ROLE_ADMIN search: contains
- рд╡рд░реНрдЧ - рд╕рд┐рджреНрдзрд╛рдВрдд рдореЙрдбрд▓ред
- рднреВрдорд┐рдХрд╛ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рднреВрдорд┐рдХрд╛ рдЬреЛ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ: IS_AUTHENTICATED_ANONYMOUSLY (рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз)
- рд╕рдВрдкрддреНрддрд┐ - рдореЙрдбрд▓ рдХреА рд╕рдВрдкрддреНрддрд┐ рдЬреЛ рдСрдЯреЛ-рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдПрдЧреАред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ: рд╢реАрд░реНрд╖рдХред
- рдЦреЛрдЬ - рдСрдЯреЛ-рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд╛ рдкреНрд░рдХрд╛рд░:
- start_with - рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рд╡рд░реНрдгреЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ)
- End_with - рдкреНрд░рд╡рд┐рд╖реНрдЯ рд╡рд░реНрдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ
- рд╕рдорд╛рд╣рд┐рдд рд╣реИ - рдЕрдВрджрд░ рдкреНрд░рд╡рд┐рд╖реНрдЯ рд╡рд░реНрдг рд╣реИрдВ
рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдлрд╝реАрд▓реНрдб рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рд╣реИрдХрд░ рдХреНрд░реЗрдбрд┐рдЯ рдХрд╛рд░реНрдб рдирдВрдмрд░реЛрдВ рдХреЗ рд╕реНрд╡рдд: рд╕рдВрдХреЗрдд рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╕реНрдерд╛рдирд╛рдкрдиреНрди рди рд╣реЛ, рдХрд╣реЗред рдирд┐рдпрдВрддреНрд░рдХ рдХреЗрд╡рд▓ рдЙрди рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЗ рдорд╛рдиреЛрдВ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВред рдФрд░ рдХреЗрд╡рд▓ рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдирдХреА рднреВрдорд┐рдХрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд▓реЛрдЧреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИред
рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:
$formBuilder ->add('product', 'shtumi_ajax_autocomplete', array('entity_alias'=>'products'));
рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ
рд╕реЛрдирд╛рдЯрд╛рдбрдорд┐рдирдмрдВрдбрд▓ рдореЗрдВ рдлрд┐рд▓реНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ - рдпрд╣
рд╕рд┐рдореНрдлрдиреА 2 рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЬрдирд░реЗрдЯрд░ рд╣реИ - рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рдореИрдВ рдЗрд╕ рдмрдВрдбрд▓ рдХреЗ рдмрд┐рдирд╛ рдХреИрд╕реЗ рд░рд╣реВрдВрдЧрд╛ ...)ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд┐рдХреНрд░реА рдореЙрдбрд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдПрдХ ManyToOne рдПрд╕реЛрд╕рд┐рдПрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрдкрддреНрддрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
рдпрджрд┐ рдЙрд╕ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ ManyToOne рдЧреБрдЪреНрдЫрд╛ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдлрд╝рд┐рд▓реНрдЯрд░реНрдб рдлрд╝реАрд▓реНрдб рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдХреЙрд▓рдмреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдорддреМрд░ рдкрд░, рдРрд╕реА рджреЛ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╣реЛрдЯрд▓-> рдЕрднрд┐рдпрд╛рди-> рдкреНрд░рд╕реНрддрд╛рд╡ рдореЙрдбрд▓ рд╕рдВрд░рдЪрдирд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЙрд╕реА рд╕рдордп, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ рд╣реЛрдЯрд▓ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рджреЛрд╣рд░рд╛рд╡ рд╣реИред рд▓реЗрдХрд┐рди рдЕрднрд┐рдпрд╛рди рджреНрд╡рд╛рд░рд╛ рдСрдлрд╝рд░ рдХреА рд╕реВрдЪреА рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рджреВрд╕рд░реЗ, рдЖрдк рдСрдЯреЛ-рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдИ-рдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдИ-рдореЗрд▓ рдлрд╝реАрд▓реНрдб рд╕реНрд╡рдпрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЙрдбрд▓ рдореЗрдВ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рдХрд┐рд╕реА рднреА ManyToOne рдХрдиреЗрдХреНрд╢рди рдХреА рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред
Shtumi_ajax_autocomplete рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреЙрд▓рдмреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ:
рдЖрд╢реНрд░рд┐рдд рдХреНрд╖реЗрддреНрд░
рдПрдХ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рдФрд░ рдЕрдХреНрд╕рд░ рдЖрд╡рд╢реНрдпрдХ рдХреНрд╖реЗрддреНрд░ рдПрдХ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рд╣реИ, рдЬрд┐рд╕рдХреА рд╕рд╛рдордЧреНрд░реА рджреВрд╕рд░реЗ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдореВрд▓реНрдп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рджреЗрд╢реЛрдВ рдФрд░ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рд╣реИред рдХреЗрд╡рд▓ рдЙрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдЪрдпрдирд┐рдд рджреЗрд╢ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред ShtumiUsefulBundle рдРрд╕реЗ рдлрд╝реАрд▓реНрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ - рдкреНрд░рдХрд╛рд░ depend_filtered_entityред

рдкрд┐рдЫрд▓реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
//app/config/config.yml
shtumi_useful: dependent_filtered_entities: region_by_country: class: AcmeDemoBundle:Region parent_property: country property: title role: ROLE_USER no_result_msg: 'No regions found for that country' order_property: title order_direction: ASC
- рд╡рд░реНрдЧ - рдЖрд╢реНрд░рд┐рдд рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдореЙрдбрд▓ред
- рднреВрдорд┐рдХрд╛ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рднреВрдорд┐рдХрд╛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, IS_AUTHENTICATED_ANONYMOUSLY рд╕рднреА рдХреЗ рд▓рд┐рдП рд╣реИред
- parent_property - рдПрдХ рдореЙрдбрд▓ рдЧреБрдг рдЬрд┐рд╕рдореЗрдВ ManyToOne рдмрдВрдбрд▓ рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рдореЙрдбрд▓ рдХрд╛ рд▓рд┐рдВрдХ рд╣реЛрддрд╛ рд╣реИред
- рд╕рдВрдкрддреНрддрд┐ - рдПрдХ рдореЙрдбрд▓ рд╕рдВрдкрддреНрддрд┐ рдЬреЛ рдирд┐рд░реНрднрд░ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдореЗрдВ рдкрд╛рда рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ: рд╢реАрд░реНрд╖рдХ
- no_result_msg - рд╡рд╣ рдкрд╛рда рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрд╢реНрд░рд┐рдд рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рдирд┐рд░реНрднрд░ рддрддреНрд╡ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ: рдХреЛрдИ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рдорд┐рд▓реЗред рдЗрд╕ рдкрд╛рда рдХреЛ рд╕рдВрджреЗрд╢реЛрдВ рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
- order_property - рдореЙрдбрд▓ рдХреА рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдбреЗрдЯрд╛ рдХреЛ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдореЗрдВ рд╕реЙрд░реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ: рдЖрдИрдбреА
- рдХреНрд░рдо_рдирд┐рд░реНрджреЗрд╢ - рд╕реЙрд░реНрдЯ рджрд┐рд╢рд╛:
- ASC - (рдбрд┐рдлрд╝реЙрд▓реНрдЯ)
- DESC
рд╕реНрд╡рдпрдВ рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдлрд┐рд░ рд╕реЗ рдХреЛрдИ рдХрдард┐рдирд╛рдИ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
$formBuilder ->add('country', 'entity', array('class' => 'AcmeDemoBundle:Country' , 'required' => true , 'empty_value'=> '== Choose country ==')) ->add('region', 'shtumi_dependent_filtered_entity' , array('entity_alias' => 'region_by_country' , 'empty_value'=> '== Choose region ==' , 'parent_field'=>'country'))
parent_field - рдЗрд╕ рд░реВрдк рдореЗрдВ рдореБрдЦреНрдп рдлрд╝реАрд▓реНрдб рдХрд╛ рдирд╛рдоред
рдирд┐рд░реНрднрд░ рдХреНрд╖реЗрддреНрд░ рдорд╛рди AJAX рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд▓реЛрдб рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░реНрдпрд╛рдкреНрдд рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдлрд╝реЙрд░реНрдо рднрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдПрдХ рджреЗрд╢ рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рдПрдХ рдХреНрд╖реЗрддреНрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдорд┐рд▓рддрд╛ рд╣реИред
рддрд╛рд░реАрдЦреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
Symfony2 рдореЗрдВ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рддрд┐рдерд┐ рдкреНрд░рдХрд╛рд░ рд╣реИред рдЗрд╕рдореЗрдВ рдХрдИ рд╡рд┐рдЬреЗрдЯ рд╣реИрдВ рдФрд░ рджрд┐рдирд╛рдВрдХ, рдорд╛рд╣ рдФрд░ рд╡рд░реНрд╖, рдпрд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд╛рда рдлрд╝реАрд▓реНрдб рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪрд┐рдпреЛрдВ рдХреА рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдБ рджрд┐рдирд╛рдВрдХ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЖрдкрдХреЛ рдПрдХ DateTime рдСрдмреНрдЬреЗрдХреНрдЯ рдорд┐рд▓рддрд╛ рд╣реИред рдкреЙрдк-рдЕрдк рдХреИрд▓реЗрдВрдбрд░ рдХреЛ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ рдХреНрд▓рд╛рд╕ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдХреЛ рдлреЙрд░реНрдо рдПрд▓рд┐рдореЗрдВрдЯ рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдлрд┐рд░ jQuery UI, рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреИрд▓реЗрдВрдбрд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
DATERANGE
рдХрдо рдЕрдХреНрд╕рд░, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдлреЙрд░реНрдо рдореЗрдВ рдПрдХ рддрд┐рдерд┐ рд╕реАрдорд╛ рдЪреБрдирдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣рд╛рдВ рдХреЛрдИ рдорд╛рдирдХ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╕рдорд╛рдзрд╛рди рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ред ShtumiUsefulBundle рдореЗрдВ рдПрдХ shtumi_daterange рдкреНрд░рдХрд╛рд░ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдлрд╝реАрд▓реНрдб рдбреЗрдЯреНрд░реЗрдВрдЬ рдХреНрд▓рд╛рд╕ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдмрдВрдбрд▓ рдХреЗ рдЕрдВрджрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред DateRange рдореЗрдВ рдЕрд╡рдзрд┐ рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рд╕рдорд╛рдкреНрддрд┐ рддрд┐рдерд┐рдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВ, рддрд┐рдерд┐рдпреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░реВрдк, рд╕рд╛рде рд╣реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗред

рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдлрд┐рд░ рд╕реЗ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рддрд┐рдерд┐ рдкреНрд░рд╛рд░реВрдк рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
//app/config/config.yml
shtumi_useful: date_range: date_format: d/m/Y default_interval: P30D
DateRange рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрд▓рдЧ рд╕реЗрд╡рд╛ ShtumiUsefulBundle рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реИред
DateRange рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рддреАрди рддрд░реАрдХреЗ рд╣реИрдВ:
1. shtumi_daterange рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
2. рдХрдХреНрд╖рд╛ рд╕реЗ рд╕реАрдзреЗ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛
use Shtumi\UsefulBundle\Model\DateRange; ... $date_format = 'Ym-d'; $dateRange3 = new DateRange($date_format); $dateRange3->createToDate(new \DateTime(), 'P3D');
3. рдЦрдЬреВрд░ рдХреЗ рдЕрдВрддрд░рд╛рд▓ рд╕реЗ рдпреБрдХреНрдд рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ред
use Shtumi\UsefulBundle\Model\DateRange; ... $dateRange4 = new DateRange('m/d/Y'); $dateRange4->parseData('03/27/2012 - 04/05/2012');
DateRange рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реА, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореЗрдВ рджреЛ рдореБрдЦреНрдп рдЧреБрдг рд╣реИрдВ - рдбреЗрдЯрд╕реНрдЯрд╛рд░реНрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдХреА рддрд╛рд░реАрдЦ рдФрд░ рддрд╛рд░реАрдЦ рдХреЗ рдЕрдВрдд рдХрд╛ рдЕрдВрддрд░рд╛рд▓ред рдпреЗ рдЧреБрдг DateTime рд╕рд┐рд╕реНрдЯрдо рдХреНрд▓рд╛рд╕ рдХреА рд╡рд╕реНрддреБрдПрдБ рд╣реИрдВред
echo $dateRange->dateEnd->format('dmY');
Shtumi_daterange рдлрд╝реЙрд░реНрдо рдлрд╝реАрд▓реНрдб рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдлрд┐рд░ рд╕реЗ рд╕рд░рд▓ рдФрд░ рд╕рд╣рдЬ рд╣реИ:
$formBuilder ->add('point1', "shtumi_daterange", array('required'=>false , 'default'=>$dateRange1))
рдЕрддрд┐рд░рд┐рдХреНрдд DQL рдХрд╛рд░реНрдп
рд╣рд░ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ Symfony2 Doctrine ORM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рдЕрдкрдиреА DQL рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ рд╣реИред DQL рд╕рд┐рдВрдЯреИрдХреНрд╕ SQL тАЛтАЛрдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ MySQL рдХреЗ рд╕рднреА рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИрдВред рдореБрдЭреЗ рдЕрдХреНрд╕рд░ IFNULL, ROUND рдФрд░ DATE_DIFF рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдЬреЛ рдорд╛рдирдХ рдбреЙрдХреНрдЯреНрд░рд┐рди рдкреИрдХреЗрдЬ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВред
ShtumiUsefulBundle DQL рдореЗрдВ MySQL рдХреЗ рд╕рдорд╛рди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЗрди рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рдЕрддрд┐рд░рд┐рдХреНрдд DQL рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ рдЙрдиреНрд╣реЗрдВ рдбреЙрдХреНрдЯреНрд░рд┐рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
doctrine: ... orm: entity_managers: default: dql: datetime_functions: datediff: Shtumi\UsefulBundle\DQL\DateDiff numeric_functions: ifnull: Shtumi\UsefulBundle\DQL\IfNull round: Shtumi\UsefulBundle\DQL\Round
рдирд┐рд╖реНрдХрд░реНрд╖
рдмреЗрд╢рдХ, рдкреНрд░рд╕реНрддреБрдд рдмрдВрдбрд▓ рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рд╕рд┐рдореНрдлрдиреА рдореЗрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╕рд╛рдордиреЗ рдЖрдиреЗ рд╡рд╛рд▓реА рдХреБрдЫ рдЫреЛрдЯреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣рд▓ рд╣реЛ рдЧрдИрдВ рдФрд░ рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдореЗрд░рд╛ рдЬреАрд╡рди рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореЗрд░рд╛ рдХрд╛рдо рдХрд┐рд╕реА рдФрд░ рдХреЛ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧреЗрдЧрд╛ рдФрд░ рдХрдо рд╕реЗ рдХрдо рдЙрд╕рдХреЗ рдЬреАрд╡рди рдХреЛ рдереЛрдбрд╝рд╛ рдЖрд╕рд╛рди рдмрдирд╛ рджреЗрдЧрд╛ред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рд░реВрдкрд░реЗрдЦрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ, ShtumiUsefulBundle рдХреЛ рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдкреЛрдВ, DQL рдлрд╝рдВрдХреНрд╢рди, TWIG рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛, рдЖрджрд┐ред рдЗрд╕ рдмрдВрдбрд▓ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдореИрдВрдиреЗ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдореИрдВрдиреЗ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдм рдХреБрдЫ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдореБрдЭреЗ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ, рдЖрд▓реЛрдЪрдирд╛, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдореАрдХреНрд╖рд╛ рд╕реБрдирдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЦреБрд╢реА рд╣реЛрдЧреАред