Laravel рдореЗрдВ рдмрд╛рдЗрдВрдбрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдо рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЛрдб рд▓рд┐рдЦреЗрдВ

рдЫрд╡рд┐

рдЕрдЪреНрдЫрд╛ рд╕рдордп, рджреЗрд╡рд┐рдпреЛрдВ рдФрд░ рд╕рдЬреНрдЬрдиреЛрдВред

рдмрд╣реБрдд рдкрд╣рд▓реЗ рдирд╣реАрдВ рдЬрдм рдореИрдВрдиреЗ рд▓рд╛рд░рд╡реЗрд▓ рдореЗрдВ рдХрд┐рд╕реА рдПрдХрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╕рдордп рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдФрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЛрдб рдХреА рдШрдЯрдирд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ред

рд▓рдмреНрдмреЛрд▓реБрдЖрдм рдпрд╣ рд╣реИ: рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ AJAX рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдВрддрд░рд┐рдХ рдПрдкреАрдЖрдИ рдХреА рдХреБрдЫ рд╕рдВрд░рдЪрдирд╛ рд╣реИ, рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ (рдЖрджреЗрд╢, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдХреЛрдЯрд╛, рдЖрджрд┐ ...) рд╕реЗ рдХреБрдЫ рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдкреВрд░рд╛ рдмрд┐рдВрджреБ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде JSON рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдирд╣реАрдВред рдХреЛрдб рдХреА рд╕рдореАрдХреНрд╖рд╛ рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ рд╣реА рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ 5 рдпрд╛ 6 рдХрдХреНрд╖рд╛рдПрдВ рдЧрд┐рдирд╛, рдХреЗрд╡рд▓ рдЕрдВрддрд░ рд░рд┐рд╕реЛрд░реНрд╕рдХреЙрд▓рд┐рдиреЗрд╢рди, JsonResource рдФрд░ рдореЙрдбрд▓ рдХреЗ рд╣реА рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдореЗрдВ рдерд╛ред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрд░реЗ рд▓рд┐рдП рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЧрд▓рдд рд▓рдЧ рд░рд╣рд╛ рдерд╛, рдФрд░ рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ, рдЗрд╕ рдХреЛрдб рдореЗрдВ рд╕рд╣реА рдкрд░рд┐рд╡рд░реНрддрди, рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдбрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреЛ рдХрд┐ рд▓рд╛рд░рд╡реЗрд▓ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдмрд╛рдж рдореЗрдВ рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВ рдХреИрд╕реЗ рдЖрдпрд╛ред

рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА Magento 2 рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рдбреЗрдврд╝ рд╕рд╛рд▓ рдХрд╛ рдЕрдиреБрднрд╡ рд╣реИ, рдФрд░ рдЬрдм рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдЗрд╕ CMS рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛, рддреЛ рдореБрдЭреЗ рдЕрдкрдиреЗ рдбреЙ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЭрдЯрдХрд╛ рд▓рдЧрд╛ред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ: рдореИрдЧреЗрдВрдЯреЛ 2 рдореЗрдВ, рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╣рд┐рд╕реНрд╕рд╛ рддрдерд╛рдХрдерд┐рдд "рдЖрднрд╛рд╕реА рдкреНрд░рдХрд╛рд░" рдкрд░ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдЧ рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рд╣рдореЗрд╢рд╛ "рд╡рд╛рд╕реНрддрд╡рд┐рдХ" рд╡рд░реНрдЧ рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рдирд╣реАрдВ рд╣реИрдВред рд╣рдо рдЖрднрд╛рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд "рд╡рд╛рд╕реНрддрд╡рд┐рдХ" рд╡рд░реНрдЧ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЧреНрд░рд┐рдб рдХреЗ рд▓рд┐рдП рд╕рдВрдЧреНрд░рд╣, рдбреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХрддреНрд░) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ "рдЗрдХрдЯреНрдард╛" рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рд╣реИ, рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ DI рдореЗрдВ рд╕рдорд╛рди рдХреБрдЫ рд▓рд┐рдЦрдХрд░ рдЕрдкрдиреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд╡рд░реНрдЧ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

<virtualType name="Vendor\Module\Model\ResourceModel\MyData\Grid\Collection" type="Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult"> <arguments> <argument name="mainTable" xsi:type="string">vendor_table</argument> <argument name="resourceModel" xsi:type="string">Vendor\Module\Model\ResourceModel\MyData </argument> </arguments> </virtualType> 

рдЕрдм, Vendor \ Module \ Model \ ResourceModel \ MyData \ Grid \ Collection рд╡рд░реНрдЧ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдХреЗ, рд╣рдореЗрдВ Magento \ рдлреНрд░реЗрдорд╡рд░реНрдХ \ View \ Element \ UiComponent \ DataProvider \ Searchbult рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдорд┐рд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рд╡рд┐рдХреНрд░реЗрддрд╛ рдХреЗ рд╕рд╛рде "рд╡рд┐рдХреНрд░реЗрддрд╛_ рд╕рдВрдЧрдд" рдФрд░ ResourceModel рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рд╡рд┐рдХреНрд░реЗрддрд╛ \ рдореЙрдбреНрдпреВрд▓ \ рдореЙрдбрд▓ \ рд░рд┐рд╕реЛрд░реНрд╕рдореЙрдбрд▓ \ рдорд╛рдпрдбрд╛рдЯрд╛ред "

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдРрд╕рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд▓рдЧ рд░рд╣рд╛ рдерд╛, рдкреВрд░реА рддрд░рд╣ рд╕реЗ "рдЙрдкрдпреБрдХреНрдд" рдирд╣реАрдВ рдФрд░ рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рдЧреЗрдВрдж рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдПрдХ рд╕рд╛рд▓ рдмрд╛рдж, рдореИрдВ, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЕрдиреБрдпрд╛рдпреА рдмрди рдЧрдпрд╛, рдФрд░, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдорд┐рд▓рд╛ред ред

рд╡рд╛рдкрд╕ рд▓рд╛рд░рд╡реЗрд▓ рдореЗрдВред

DI Laravel рдПрдХ "рд╕рд░реНрд╡рд┐рд╕ рдХрдВрдЯреЗрдирд░" рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдПрдХ рдЗрдХрд╛рдИ рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдмрд╛рдЗрдВрдбрд░реЛрдВ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, DummyDataProviderInterface рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рд╣реА рдЗрд╕ DummyDataProvider рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╕рдВрдХреЗрдд рджреЗ рд╕рдХрддреЗ рд╣реИрдВред

 app()->bind(DummyDataProviderInterface::class, DummyDataProvider::class); 

рдлрд┐рд░, рдЬрдм рд╣рдо рд╕реЗрд╡рд╛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ DummyDataProviderInterface рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрд▓рд╛рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ), рддреЛ рд╣рдореЗрдВ DummyDataProvider рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдорд┐рд▓рддрд╛ рд╣реИред

рдХрдИ (рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ) рд▓рд╛рд░рд╡реЗрд▓ рд╕реЗрд╡рд╛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЗрд╕ рдЬреНрдЮрд╛рди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреА рдЦреБрдж рдХреА, рдмрд╣реБрдд рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реНрдпрд░реНрде рдореЗрдВ ред

рд▓рд╛рд░рд╡реЗрд▓ рди рдХреЗрд╡рд▓ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрд╕реНрдерд╛рдУрдВ, рдЬреИрд╕реЗ рдХрд┐ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕, рдХреЛ "рдмрд╛рдЗрдВрдб" рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рддрдерд╛рдХрдерд┐рдд "рдЖрднрд╛рд╕реА рдкреНрд░рдХрд╛рд░" (рдЙрд░реНрдл рдЙрдкрдирд╛рдо) рднреА рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рднреА, рд▓рд╛рд░рд╡реЗрд▓ рдХреЛ рдПрдХ рд╡рд░реНрдЧ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдмрд╛рдЗрдВрдб () рд╡рд┐рдзрд┐ рджреВрд╕рд░реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рд▓реЗ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ $ рдРрдк рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рд╣реБрдЖ рд╣реИ - рдЖрд╡реЗрджрди рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдгред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЕрдм рд╣рдо рдЕрдзрд┐рдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдмрдВрдзрди рдореЗрдВ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╣рдо рдЙрд╕ рд╡рд░реНрдЧ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ рдЬреЛ "рдЖрднрд╛рд╕реА рдкреНрд░рдХрд╛рд░" рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рдЖрдкрдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рд╣рд░ рдХреЛрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╕рд╣рдордд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдПрдХ рд╣реА рд╡рд░реНрдЧ рдХреЗ рд╕реИрдХрдбрд╝реЛрдВ рдХреЗ рдкреНрд░рд╢рдВрд╕рдХ рд╣реИрдВ, рддреЛ рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВред

рддреЛ, рдПрдХ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рд╣рдо рддрдп рдХрд░реЗрдВрдЧреЗ рдХрд┐ "рд╡рд╛рд╕реНрддрд╡рд┐рдХ" рд╡рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрдпрд╛ рдХрд╛рд░реНрдп рдХрд░реЗрдЧрд╛ред рдПрдХ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдореЗрдВ рдореЗрд░реЗ рд╕рд╛рдордиреЗ рдЖрдИ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╕рдВрд╕рд╛рдзрди рдЕрдиреБрд░реЛрдзреЛрдВ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕реАрдЖрд░рдпреВрдбреА, рд▓реЗрдХрд┐рди рдереЛрдбрд╝рд╛ рдХрдЯ рдбрд╛рдЙрди) рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕реНрдерд┐рддрд┐ рдХреЛ рд▓реЗрдВред

рдЖрдЗрдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХреНрд░реВрдб рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦреЗрдВ:

 <?php namespace Wolf\Http\Controllers\Backend\Crud; use Illuminate\Database\Eloquent\Model; use Illuminate\Http\Request; use Wolf\Http\Controllers\Controller; class BaseController extends Controller { /** * @var Model */ protected $model; /** * @var \Illuminate\Http\Resources\Json\ResourceCollection|null */ protected $resourceCollection; /** * @var \Illuminate\Http\Resources\Json\JsonResource|null */ protected $jsonResource; /** * BaseController constructor. * @param Model $model * @param \Illuminate\Http\Resources\Json\ResourceCollection|null $resourceCollection * @param \Illuminate\Http\Resources\Json\JsonResource|null $jsonResource */ public function __construct( $model, $resourceCollection = null, $jsonResource = null ) { $this->model = $model; $this->resourceCollection = $resourceCollection; $this->jsonResource = $jsonResource; } /** * Display a listing of the resource. * * @param Request $request * @return \Illuminate\Http\Resources\Json\ResourceCollection */ public function index(Request $request) { return $this->resourceCollection::make($this->model->get()); } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Resources\Json\JsonResource */ public function show($id) { return $this->jsonResource::make($this->model->find($id)); } } 

рдореИрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдЬреНрдпрд╛рджрд╛ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рд╣реБрдЖ, рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпреЛрдЬрдирд╛ рдХреЗ рд╕реНрддрд░ рдкрд░ рд╣реИред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВ рдЬреЛ рд╣рдореЗрдВ рдХреБрдЫ рд▓реМрдЯрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: рд╕реВрдЪрдХрд╛рдВрдХ, рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдФрд░ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЗрдХрд╛рдИ рдХреЗ рдЬреЛрдВрд╕ рд╕рдВрд╕рд╛рдзрди рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

рдпрджрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рд░ рдмрд╛рд░ рд╣рдо рдПрдХ рдРрд╕рд╛ рд╡рд░реНрдЧ рдмрдирд╛рдПрдВрдЧреЗ рдЬрд┐рд╕рдореЗрдВ 1-2 рдмрд╕рдиреЗ рд╡рд╛рд▓реЗ рдореЙрдбрд▓, рд╕рдВрд╕рд╛рдзрди рдФрд░ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛рдПрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛрдВрдЧреАред рджрд░реНрдЬрдиреЛрдВ рдлрд╛рдЗрд▓реЛрдВ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗрд╡рд▓ 1-2 рд╣реИред рд╣рдо рдбреАрдЖрдИ рд▓рд╛рд░рд╡реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕реЗ "рдХреНрд▓реЛрди" рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВред

рддреЛ, рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╕рд░рд▓ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рд╕реНрд╡рд┐рд╕ рдШрдбрд╝реА рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реЛрдЧреАред
рдПрдХ json рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдкреНрд░рддреНрдпрдХреНрд╖ рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рде "рдЖрднрд╛рд╕реА рдкреНрд░рдХрд╛рд░" рдХреА рдПрдХ рд╕рд░рдгреА рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрдЧреНрд░рд╣, рдореЙрдбрд▓, рд╕рдВрд╕рд╛рдзрди, рдЖрджрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ ...

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣:

 { "Wolf\\Http\\Controllers\\Backend\\Crud\\OrdersResourceController": { "model": "Wolf\\Model\\Backend\\Order", "resourceCollection": "Wolf\\Http\\Resources\\OrdersCollection", "jsonResource": "Wolf\\Http\\Resources\\OrderResource" } } 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, Laravel рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рд╡реБрд▓реНрдл \ Http \ Controllers \ Backend \ Crud \ BaseController рдХреЛ рд╣рдорд╛рд░реЗ рд╡рд░реНрдЪреБрдЕрд▓ рдкреНрд░рдХрд╛рд░ Wolf \ Http \ Controllers \ Backend \ Crud \ OrdersResourceController рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВрдЧреЗ (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рд░реНрдЧ рдЕрдореВрд░реНрдд рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рд╡реБрд▓реНрдл \ _ рдПрдЪрдЯреАрдЯреАрдкреА \ рдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ \ рдмреИрдХреЗрдВрдб \ рдХреНрд░реВрдб \ рдУрдбрд░рд╕ рд╕реЛрд░реНрд╕рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╣рдореЗрдВ рд╡реБрд▓реНрдл \ _ рдПрдЪрдЯреАрдкреАрдкреА рдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ \ рдмреИрдХреЗрдВрдб \ рдХреНрд░реВрдб \ рдмреЗрд╕рдбрдВрдЯреНрд░реЛрд▓рд░ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рди рдХрд┐ рдПрдХ рд╕рд╛рд░ рд╡рд░реНрдЧ)ред

CrudServiceProvider рдореЗрдВ, рдмреВрдЯ () рд╡рд┐рдзрд┐ рдореЗрдВ, рдирд┐рдореНрди рдХреЛрдб рдбрд╛рд▓реЗрдВ:

 $path = app_path('etc/crud.json'); if ($this->filesystem->isFile($path)) { $virtualTypes = json_decode($this->filesystem->get($path), true); foreach ($virtualTypes as $virtualType => $data) { $this->app->bind($virtualType, function ($app) use ($data) { /** @var Application $app */ $bindingData = [ 'model' => $app->make($data['model']), 'resourceCollection' => $data['resourceCollection'], 'jsonResource' => $data['jsonResource'] ]; return $app->makeWith(self::BASE_CRUD_CONTROLLER, $bindingData); }); } } 

рдирд┐рд░рдВрддрд░ BASE_CRUD_CONTROLLER рдореЗрдВ рдЙрд╕ рд╡рд░реНрдЧ рдХрд╛ рдирд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ CRUD рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред

рдЖрджрд░реНрд╢ рд╕реЗ рджреВрд░, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ :)

рдпрд╣рд╛рдВ рд╣рдо рдЖрднрд╛рд╕реА рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ рдФрд░ рдмрд╛рдЗрдВрдбрд░реЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд┐рд╕ рдХрдВрдЯреЗрдирд░ рд╕реЗ рдореЙрдбрд▓ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд░рд┐рд╕реЛрд░реНрд╕рдХреЛрд▓реЗрд╢рди рдФрд░ JsonResource рд╕рд┐рд░реНрдл рдХреНрд▓рд╛рд╕ рдХреЗ рдирд╛рдо рд╣реИрдВред рдРрд╕рд╛ рдХреНрдпреЛрдВ? рдореЙрдбрд▓ рдХреЛ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рдирд╣реАрдВ рд▓реЗрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдпрд╣ рдЙрдирдХреЗ рдмрд┐рдирд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрд╕рд╛рдзрди рдореЗрдВ рд▓реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рд╕реЗ рд╡реЗ рдбреЗрдЯрд╛ рдФрд░ рдЗрдХрд╛рдЗрдпрд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред рдЗрд╕рд▓рд┐рдП, рдмреЗрд╕рдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ рд╣рдо рдХреНрд░рдорд╢рдГ рд╕реНрдЯреИрдЯрд┐рдХ рдореЗрдердбреНрд╕ рдХрд▓реЗрдХреНрд╢рди () рдФрд░ рдореЗрдХ () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╣рдо рдбрд╛рдпрдиреЗрдорд┐рдХ рдЧреЗрдЯрд░реНрд╕ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕рдВрд╕рд╛рдзрди рдореЗрдВ рдХреБрдЫ рдбрд╛рд▓реЗрдВрдЧреЗ рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд▓реМрдЯрд╛рдПрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛) рдЬреЛ рд╣рдореЗрдВ рдЗрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧрд╛ред рд╕рдорд╛рди рд╕рдВрдЧреНрд░рд╣, рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рдеред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдк рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдкреВрд░реЗ рд▓рд╛рд░рд╡реЗрд▓ рдХреЛ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдмрд╛рдВрдз рд╕рдХрддреЗ рд╣реИрдВред

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рд╡реБрд▓реНрдл \ _ Http \ Controllers \ Backend \ Crud \ OrdersResontController рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реБрдП рд╣рдореЗрдВ рдХрдВрдЯреНрд░реЛрд▓рд░ Wolf \ Http \ Controllers \ Backend \ Crud \ BaseController рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдорд┐рд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдореЙрдбрд▓, рд╕рдВрд╕рд╛рдзрди рдФрд░ рд╕рдВрдЧреНрд░рд╣ рдХреА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рдеред рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ ResourceCollection рдФрд░ JsonResource рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ рдФрд░ рдЖрдк рд▓реМрдЯреЗ рдбреЗрдЯрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

Source: https://habr.com/ru/post/hi451462/


All Articles