рд╕рд┐рдореНрдлрдиреА 2 рдХреА рдмреБрдирд┐рдпрд╛рджреА рдбрд┐рд▓реАрд╡рд░реА
рд╕реАрдЖрд░рдпреВрдбреА рдЗрдВрдЯрд░рдлреЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдиреНрдпреВрдирддрдо рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА
рд╣реИ ред рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдИ рдмрдВрдбрд▓ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ,
рд╕реЛрдирд╛рдЯрд╛рдЕрдорд┐рдирдмрдВрдбрд▓ ред
рдпрд╣ рдХрд┐рд╕ рд▓рд┐рдП рд╣реИ?
SonataAdminBundle рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЬрд▓реНрджреА рд╕реЗ ORM рдореЙрдбрд▓ рдХреЗ рд╕рдВрдкрд╛рджрди рд╕рдВрд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ (
MongoDb рдФрд░
PHPCr рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдмрдВрдбрд▓ рднреА
рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ , рд▓реЗрдХрд┐рди рд╡реЗ рдЕрднреА рднреА рд╡рд┐рдХрд╛рд╕ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдореЗрдВ рд╣реИрдВ)ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдХрд┐рд╕реА рднреА рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдЕрдкрдиреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдХреНрдЯреВрдмрд░ 2011 рдХреЗ рдЕрдВрдд рдореЗрдВ, рдбрд┐рдЬрд╛рдЗрди рдХреЛ
рдЯреНрд╡рд┐рдЯрд░ рдмреВрд╕реНрдЯреНрд░реИрдк рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛рдлреА рдЖрдзреБрдирд┐рдХ рд╣реИред
рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рд╡рд┐рдиреНрдпрд╛рд╕
рдбрд┐рдкреНрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдЖрдкрдХреЛ SonataAdminBundle рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдмрдВрдбрд▓реЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:
[SonataAdminBundle] git=http://github.com/sonata-project/SonataAdminBundle.git target=/bundles/Sonata/AdminBundle [SonataDoctrineORMAdminBundle] git=http://github.com/sonata-project/SonataDoctrineORMAdminBundle.git target=/bundles/Sonata/DoctrineORMAdminBundle [SonatajQueryBundle] git=http://github.com/sonata-project/SonatajQueryBundle.git target=/bundles/Sonata/jQueryBundle [KnpMenuBundle] git=https://github.com/KnpLabs/KnpMenuBundle.git target=/bundles/Knp/Bundle/MenuBundle [KnpMenu] git=https://github.com/KnpLabs/KnpMenu.git target=/knp/menu
рдФрд░ рдлрд┐рд░ рдЪрд▓рд╛
php bin/vendors install
рдПрдкреНрд▓рд┐рдХреЗрд╢рди / autoload.php рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдЖрдкрдХреЛ рдРрдк / AppKernel.php рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирдП рдирд╛рдорд╕реНрдерд╛рди рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рд╕реНрдерд╛рдкрд┐рдд рдмрдВрдбрд▓реЛрдВ рдХрд╛ рдЖрд░рдВрднреАрдХрд░рдг
<?php
рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдХреЙрдиреНрдлрд┐рдЧ / рд░реВрдЯрд┐рдВрдЧ.рдЖрдИрдПрдордПрд▓ рдлрд╛рдЗрд▓ рдореЗрдВ, рдЖрдкрдХреЛ рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП рд░реВрдЯрд┐рдВрдЧ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:
# app/config/routing.yml admin: resource: '@SonataAdminBundle/Resources/config/routing/sonata_admin.xml' prefix: /admin _sonata_admin: resource: . type: sonata_admin prefix: /admin
рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдмрдВрдбрд▓ рд╕реЗ рд╡реЗрдм рд╕реАрдПрд╕рдПрд╕, рдЬреЗрдПрд╕, рдЖрджрд┐ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд▓рд┐рдЦреЗрдВ
php app/console assets:install web
рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдПрдХ рдкрд╛рд╕рд╡рд░реНрдб рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдпрд╛ рддреЛ рдорд╛рдирдХ рд╕рд┐рдореНрдлрдиреА 2 рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд
FOSUserBlacklele рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдПрдкреНрд▓рд┐рдХреЗрд╢рди / config / config.yml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдЖрдк рд╢реАрд░реНрд╖рдХ рдФрд░ рд▓реЛрдЧреЛ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдЬреЛрдбрд╝реЗрдВ:
sonata_admin: title: .
рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗрд╡рд╛ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди / config / config.yml рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
framework: translator: { fallback: %locale% }
рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж, рдЬрдм рдкрддрд╛
http: // рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ / рдПрдбрдорд┐рди / рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ (рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕рд┐рдореНрдлрдиреА 2
http: // localhost ) рдирд╛рдо рд╡рд╛рд▓реА рд╕рд╛рдЗрдЯ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рдПрдХ рдЦрд╛рд▓реА рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЗрдХрд╛рдИ рдкреНрд░рд╢рд╛рд╕рди рд╕реЗрд╡рд╛рдПрдВ рдЕрднреА рддрдХ рдкрдВрдЬреАрдХреГрдд рдирд╣реАрдВ рд╣реИрдВред
рдиреЛрдЯ: рдЕрдиреБрд╡рд╛рджрдХ рдФрд░ IE
рд░реВрд╕реА рд╕реНрд╡реАрдХрд╛рд░-рднрд╛рд╖рд╛ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╡рд╛рджрдХ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ IE рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рд╡рд┐рдХрд▓реНрдк / рд╕рд╛рдорд╛рдиреНрдп / рднрд╛рд╖рд╛ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд░реБ-рд░реБ рдХреЛрдб рдХреЗ рд╕рд╛рде рд░реВрд╕реА рднрд╛рд╖рд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рд╕рдорд╛рдЪрд╛рд░реЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдПрдВрдЧреЗ, рдЬрд┐рд╕рдХрд╛ рд╕рд╛рд░ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ
рд╕рд┐рдореНрдмреЛрдиреА 2 рдкрд░ рдПрдХ рд╕реАрдЖрд░рдпреВрдбреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛ ред рдкреНрд░рдпреБрдХреНрдд рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд╕реНрд░реЛрдд
рдЧрд┐рдереВрдм рдкрд░ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
SonataAdminBundle рдПрдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рдВрдкрд╛рджрди рдлрд╝реЙрд░реНрдо, рд░рд┐рдХреЙрд░реНрдб рд╕реВрдЪреА, рд░рд┐рдХреЙрд░реНрдб рдЦреЛрдЬ рдлрд╝реЙрд░реНрдо, рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рджрд░реНрд╢рди рдкреГрд╖реНрда рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ
Django рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдЙрдзрд╛рд░ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдХрдХреНрд╖рд╛рдПрдВ {рдЗрдХрд╛рдИ рдХрд╛ рдирд╛рдо} рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ
рд╕рдорд╛рдЪрд╛рд░, рд╕рдорд╛рдЪрд╛рд░ рд▓рд┐рдВрдХ рдФрд░ рд╕рдорд╛рдЪрд╛рд░ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЯреЗрд╕реНрдЯ / рдиреНрдпреВрдЬрд╝рдмрдВрдбрд▓ / рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ 3 рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: NewsAdmin, NewsLinkAdmin рдФрд░ NewsCategoryAdmin:
<?php namespace Test\NewsBundle\Admin; use Sonata\AdminBundle\Admin\Admin; use Sonata\AdminBundle\Form\FormMapper; use Sonata\AdminBundle\Datagrid\DatagridMapper; use Sonata\AdminBundle\Datagrid\ListMapper; use Sonata\AdminBundle\Show\ShowMapper; use Knp\Menu\ItemInterface as MenuItemInterface; class NewsAdmin extends Admin { protected function configureShowField(ShowMapper $showMapper) { $showMapper ->add('id', null, array('label' => '')) ->add('title', null, array('label' => '')) ->add('announce', null, array('label' => '')) ->add('text', null, array('label' => '')) ->add('pubDate', null, array('label' => ' ')) ->add('newsLinks', null, array('label' => ' ')) ->add('newsCategory', null, array('label' => '')); } protected function configureFormFields(FormMapper $formMapper) { $formMapper ->add('title', null, array('label' => '')) ->add('announce', null, array('label' => '')) ->add('text', null, array('label' => '')) ->add('pubDate', null, array('label' => ' '))
рд╕рдорд╛рдЪрд╛рд░ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХреАрдп рд╡рд░реНрдЧ рдореЗрдВ рдХреЗрд╡рд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрдлрд╝реЙрд░реНрдордлрд╝рд┐рд▓реНрдб рд╡рд┐рдзрд┐ рд╣реЛрддреА рд╣реИ, рдЬреИрд╕реЗ рд╕рдорд╛рдЪрд╛рд░ рд▓рд┐рдВрдХ рдХреЛ рд╕рдорд╛рдЪрд╛рд░ рдХреЗ рд╕рд╛рде рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
<?php namespace Test\NewsBundle\Admin; use Sonata\AdminBundle\Admin\Admin; use Sonata\AdminBundle\Form\FormMapper; class NewsLinkAdmin extends Admin { protected function configureFormFields(FormMapper $formMapper) { $formMapper ->add('url', null, array('label' => 'URL', 'required' => true)) ->add('text', null, array('label' => '')); } }
NewsCategoryAdmin NewsAdmin рдХреЗ рд╕рдорд╛рди рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб
рдЧрд┐рдердм рдкрд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдкрдВрдЬреАрдХрд░рдг
рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рд╡рд░реНрдЧ рдХреЛ рдПрдХ рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрд╕реЗ рдЯреЗрд╕реНрдЯ / рдиреНрдпреВрдЬрд╝рдмрдВрдбрд▓ / рд░рд┐рд╕реЛрд░реНрд╕ / рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди / рд╕рд░реНрд╡рд┐рд╕реЗрдЬ.xml рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдЯреИрдЧ "sonata.admin" рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдЕрдиреНрдп рд╕реЗрд╡рд╛рдУрдВ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдореЗрдиреВ рдЖрдЗрдЯрдо рдХреЗ рд╕рдореВрд╣ рдХрд╛ рдирд╛рдо (рд╡рд┐рд╢реЗрд╖рддрд╛ "рд╕рдореВрд╣") рдФрд░ рдореЗрдиреВ рдЖрдЗрдЯрдо рдХрд╛ рдирд╛рдо (рд╡рд┐рд╢реЗрд╖рддрд╛ "рд▓реЗрдмрд▓") рднреА рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдпрд╣ рдбреЗрдЯрд╛ рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдореЗрдиреВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЦреНрдп рдореЗрдиреВ рдореЗрдВ рд╕рдорд╛рдЪрд╛рд░ рд▓рд┐рдВрдХ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдиреВ рдЖрдЗрдЯрдо рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕рдорд╛рдЪрд╛рд░ рд╕рдВрдкрд╛рджрди рдкреГрд╖реНрда рдкрд░ рджрд░реНрдЬ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╕реЗрд╡рд╛ c id = "test.news.admin.newsLink" рдХреЗ рд▓рд┐рдП рд╣рдо рд╡рд┐рд╢реЗрд╖рддрд╛ show_in_dashboard = "false" рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред
рдЙрдкрд░реНрдпреБрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╕реЗрд╡рд╛рдПрдВ рдорд╛рдирдХ рд╕реЛрдирд╛рдЯрд╛ рдПрдбрдореАрдирдмрдВрдбрд▓: рд╕реАрдЖрд░рдпреВрдбреА рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдирд┐рдпрдВрддреНрд░рдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
<?xml version="1.0" ?> <container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"> <services> <service id="test.news.admin.news" class="Test\NewsBundle\Admin\NewsAdmin"> <tag name="sonata.admin" manager_type="orm" group="" label=""/> <argument/> <argument>Test\NewsBundle\Entity\News</argument> <argument>SonataAdminBundle:CRUD</argument> </service> <service id="test.news.admin.newsLink" class="Test\NewsBundle\Admin\NewsLinkAdmin"> <tag name="sonata.admin" manager_type="orm" show_in_dashboard="false" /> <argument/> <argument>Test\NewsBundle\Entity\NewsLink</argument> <argument>SonataAdminBundle:CRUD</argument> </service> <service id="test.news.admin.newsCategory" class="Test\NewsBundle\Admin\NewsCategoryAdmin"> <tag name="sonata.admin" manager_type="orm" group="" label=" "/> <argument/> <argument>Test\NewsBundle\Entity\NewsCategory</argument> <argument>SonataAdminBundle:CRUD</argument> </service> </services> </container>
рдХреНрдпрд╛ рд╣реБрдЖ?
рд░рд┐рдмреВрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдЬрдм рдЖрдк "рд╕рдорд╛рдЪрд╛рд░ / рд╕реВрдЪреА" рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╡рд╛рд▓реЗ рд╕рдорд╛рдЪрд╛рд░реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ:

рд╕рдорд╛рдЪрд╛рд░ рд╕рдВрдкрд╛рджрди рдкреГрд╖реНрда рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рд╕рдВрд▓рдЧреНрди рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдмрджрд▓рдирд╛
рдкреГрд╖реНрда рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд┐рдП рдмрд┐рдирд╛ рд╕рдорд╛рдЪрд╛рд░ рд╕реЗ рдЬреБрдбрд╝реЗ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдПрдХ рд╕рдорд╛рдЪрд╛рд░ рдХреНрд╖реЗрддреНрд░ "NewsLink" рдЗрдХрд╛рдИ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рдорд╛рдЪрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдкрд░ рдЫрдВрдЯрдиреА рдХреА рдЬрд╛рддреА рд╣реИред рдлрд╝реАрд▓реНрдб рдкреНрд░рдХрд╛рд░ sonata_type_collection рдХреЗ рд▓рд┐рдП 'рд╕реЙрд░реНрдЯреЗрдмрд▓' => 'рдкреЙрд╕' рд╡рд┐рдХрд▓реНрдк рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реБрдП, рддрд╛рд▓рд┐рдХрд╛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЦреАрдВрдЪрдХрд░ рдФрд░ рдбреНрд░реЙрдк рдХрд░рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдЪрд╛рд░ рдХреЗ рдХреНрд░рдо рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ:

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд▓рд┐рдВрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ NewsAdmin рд╡рд░реНрдЧ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ (рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рдорд╛рдзрд╛рди рд╕рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ):
рдиреЗрд╡рд┐рдЧреЗрд╢рди
SonataAdminBundle рдХреА рдмреБрдирд┐рдпрд╛рджреА рдбрд┐рд▓реАрд╡рд░реА рдореЗрдВ рдорд╛рдирдХ рдмрдЯрди рдирд╛рдореЛрдВ, рд╣реЗрдбрд░ рдЖрджрд┐ рдХрд╛ рд░реВрд╕реА рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рд╣реИред рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдкреВрд░реНрдг рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдмрдирд╛рдП рдЧрдП рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╢реАрд░реНрд╖рдХ рдЕрдиреБрд╡рд╛рдж рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЗрдХрд╛рдИ рдирд╛рдореЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдорд╛рдЪрд╛рд░ рд╕реВрдЪреА, рд╕рдорд╛рдЪрд╛рд░ рдмрдирд╛рдПрдБред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Test / NewsBundle / Resources / рдЕрдиреБрд╡рд╛рдж рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢.ru.xliff рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ (рдЖрдк
рдпрд╣рд╛рдВ рдЕрдиреБрд╡рд╛рдж рд╕реЗрд╡рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ)
рдЪреЗрддрд╛рд╡рдиреА! рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдИ / рдЯреИрдЧ рдХреЗ рд╕рд╛рде </ рдЦрдЯреНрдЯрд╛ рдореЗрдВ, рдЕрдВрдЧреНрд░реЗрдЬреА рд╕реА рдХреЛ рд░реВрд╕реА рд╕реА рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдХреЛрдб рд╕реНрд╡рд░реВрдкрдг рдордХреНрдЦрд┐рдпреЛрдВ
<?xml version="1.0"?> <xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2"> <file source-language="ru" datatype="plaintext" original="" > <body> <trans-unit id="News List"> <source>News List</soure> <target> </target> </trans-unit> <trans-unit id="News Create"> <source>News Create</soure> <target> </target> </trans-unit> <trans-unit id="News Edit"> <source>News Edit</soure> <target> </target> </trans-unit> <trans-unit id="News Category List"> <source>News Category List< soure> <target> </target> </trans-unit> <trans-unit id="News Category Create"> <source>News Category Create</soure> <target> </target> </trans-unit> <trans-unit id="News Category Edit"> <source>News Category Edit</soure> <target> </target> </trans-unit> </body> </file> </xliff>
рдирд┐рд╖реНрдХрд░реНрд╖
рдкрд░рд┐рдгрд╛рдо рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ, рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рд░рд┐рдХреЙрд░реНрдб рд╕рдВрдкрд╛рджрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИред SonataAdmin рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдФрд░ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред SonataAdmin- рдЖрдзрд╛рд░рд┐рдд рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдХрдИ рд╡реЗрдм рдлрд╝рдВрдХреНрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдмрдВрдбрд▓реЛрдВ рдХреЛ рдЙрдкрдпреЛрдЧреА рдмрдирд╛рдпрд╛ рд╣реИ рдЬреЛ рдХрдИ рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ:
SonataUserBundle (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдмрдВрдзрди),
SonataNewsBundle (рдмреНрд▓реЙрдЧ),
SonataMediaBundle (рдореАрдбрд┐рдпрд╛ рдкреНрд░рдмрдВрдзрди) рдФрд░
SonataPageBundle (CMS рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк)ред рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдЦрд░рд╛рдм рдкреНрд░рд▓реЗрдЦрди, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реЛрдирд╛рдЯрд╛рдкреЗрдЬрдмрдВрдбрд▓, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЙрддреНрдкрд╛рдж рд╣реИред
рдЕрджреНрдпрддрди 2012-07-20: рд╕рд┐рдореНрдлрдиреА 2.1 рдХреЗ рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рд▓реЗрдЦ рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг
рдпрд╣рд╛рдВ рд╣реИ