ΠΠ°ΠΊΠ΅Ρ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π»Ρ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Laravel., (*1)
https://packagist.org/packages/kodicms/module-loader, (*2)
ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΌΠ°Π½Π΄Ρ, (*3)
composer require "kodicms/module-loader:3.*"
, (*4)
ΠΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠ°ΠΊΠ΅Ρ Π² composer.json
, (*5)
{ "require": { ... "kodicms/module-loader": "3.*" ... } }
'providers' => [ ... KodiCMS\ModulesLoader\Providers\ModuleServiceProvider::class, ... ],
composer.json
Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½{ "autoload": { ... "psr-4": { ... "Modules\\" : "modules/" }, ... }, }
app.php
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Ρ
ΡΠ°Π½ΡΡΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ modules
, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ,
ΡΠΎ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΊΠ°Π·Π°ΡΡ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΠΈΠ³ ΡΠ°ΠΉΠ» ΠΏΡΡΡ Π΄ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈ Π΅Π³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½:, (*6)
return [ ... 'modules' => [ 'modulename', // Namespace: Modules\modulename, Path baseDir/modules/modulename 'ModuleName2' => [ 'path' => {relative path to module}, 'namespace' => '\\CustomNamespace\\ModuleName2\\' ] ] ... ];
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ ΠΏΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ KodiCMS\ModulesLoader\ModuleContainer
, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅
ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΡΠΎΠ·Π΄Π°Π² Π΅Π³ΠΎ ΠΏΠΎ ΠΏΡΡΠΈ app\DefaultModuleContainer.php
ΠΈΠ»ΠΈ Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°Ρ
ΠΎΡΠΈΡΠ΅
ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ, ΡΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΉΠ» ModuleContainer.php
Π² ΠΊΠΎΡΠ½Π΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ
ΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΎΡ KodiCMS\ModulesLoader\ModuleContainer
., (*7)
Assets
- Π°ΡΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½Ρ Π² public/cms/modules/{module}
config
- ΠΊΠΎΠ½ΡΠΈΠ³ΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΡΠ»ΠΈ Π² ΠΌΠΎΠ΄ΡΠ»ΡΡ
Π΅ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ ΡΠ°ΠΉΠ»Ρ Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ, ΡΠΎ ΠΈΡ
ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΌΠ΅ΡΠ΄ΠΆΠΈΡΡΡConsole
Commands
- ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΡ
ΠΊΠΎΠΌΠΏΠ°Π½Π΄Ρdatabase
migrations
- ΡΠ°ΠΉΠ»Ρ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ, Π±ΡΠ΄ΡΡ Π·Π°ΠΏΡΡΠ΅Π½Ρ ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ modules:migrate
seeds
DatabaseSeeder.php
- Π΅ΡΠ»ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΡΠΎ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½ ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ modules:seed
Http
Controllers
- ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρroutes.php
- ΡΠΎΡΡΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ Π² Π½Π΅ΠΉΠΌΡΠΏΠ΅ΠΉΡ Modules\{module}
Providers
ModuleServiceProvider.php
- Π‘Π΅ΡΠ²ΠΈΡ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅Ρ ΠΌΠΎΠ΄ΡΠ»Ρ, Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡresources
lang
- Π€Π°ΠΉΠ»Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΎΠ² Π΄Π»Ρ ΠΌΠΎΠ΄ΡΠ»Ρ, Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΏΠΎ ΠΊΠ»ΡΡΡ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π² Π½ΠΈΠΆΠ½ΠΈΠΉ ΡΠ΅Π³ΠΈΡΡΡ trans('{module}::file.key')
views
- Π¨Π°Π±Π»ΠΎΠ½Ρ ΠΌΠΎΠ΄ΡΠ»Ρ, Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΏΠΎ ΠΊΠ»ΡΡΡ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π² Π½ΠΈΠΆΠ½ΠΈΠΉ ΡΠ΅Π³ΠΈΡΡΡ view('{module}::template')
ModuleContainer.php
- ΠΡΠ»ΠΈ Π΄Π°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΡΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ ΠΊΠ°ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΠΌΠΎΠ΄ΡΠ»Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΊΠ°Π·Π°Π½Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΡΠ½Π΅ ΠΏΡΡΠΈ ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΎΡ KodiCMS\ModulesLoader\ModuleContainer
php artisan modules:list
- ΠΏΡΠΎΡΠΌΠΎΡΡ ΡΠΏΠΈΡΠΊΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΡ
ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ php artisan modules:migrate
- Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΉ ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ (ΠΠΎΡΡΡΠΏΠ½Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ Π΄Π»Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ migrate
)
php artisan modules:seed
- ΡΠΈΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉphp artisan modules:assets:publish
- ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ assets ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ Assets Π² public/modules/{module}