YIMP - ΠΠ°Π½Π΅Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π»Ρ Yii 2 Π½Π° Bootstrap 4 ΒΆ
ΠΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΒΆ
YIMP - ΡΡΠΎ ΠΏΠ°Π½Π΅Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½Π°Ρ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
YIMP ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π»Π΅ΠΉΠ°ΡΡ, Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π΄Π»Ρ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ
ΡΡΡΡΠΎΠΉΡΡΠ² ΠΈ Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΠΉ Π² ΡΠ΅Π±Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΡΡΡΠ°Π½ΠΈΡΡ, Ρ
Π»Π΅Π±Π½ΡΠ΅ ΠΊΡΠΎΡΠΊΠΈ,
Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΠΈ ΠΌΠ΅Π½Ρ - Π²Π΅ΡΡ
Π½Π΅Π΅, Π»Π΅Π²ΠΎΠ΅ ΠΈ ΠΏΡΠ°Π²ΠΎΠ΅. ΠΡΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡΡΡ Π² ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π² Π»Π΅ΠΉΠ°ΡΡ ΡΠ΅ΡΠ΅Π·
ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ Navigator.
ΠΠΎΠ»Π΅Π·Π½ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ: Live demo, API documentation.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ΅ΡΠ΅Π· Composer ΒΆ
Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π΅ΡΠ΅ Π½Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½Π°. Π Π΅Π»ΠΈΠ· Π²Π΅ΡΡΠΈΠΈ 0.1 Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ Π½Π° 10 ΡΠ΅Π½ΡΡΠ±ΡΡ 2019 Π³ΠΎΠ΄Π°. ΠΠ΅ΡΡΠΈΡ 1.0 Π΄ΠΎΠ»ΠΆΠ½Π°
Π²ΡΠΉΡΠΈ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° ΡΠ΅Π½ΡΡΠ±ΡΡ 2019 Π³ΠΎΠ΄Π°. ΠΡΠ»ΠΈ ΠΡ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ YIMP, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ΅ΡΠ΅Π· Composer Π²Π΅ΡΡΠΈΡ dev-master. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ:
Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
php composer.phar require dmitrybtn/yii2-yimp:dev-master
ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅
"dmitrybtn/yii2-yimp": "dev-master"
Π² ΡΠ΅ΠΊΡΠΈΡ require Π²Π°ΡΠ΅Π³ΠΎ composer.json
.
ΠΡΡΡΡΡΠΉ ΡΡΠ°ΡΡ ΒΆ
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π»Π΅ΠΉΠ°ΡΡΠ° ΒΆ
ΠΠ΅ΠΉΠ°ΡΡ Ρ
ΡΠ°Π½ΠΈΡΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ vendor/dmitrybtn/yii2-yimp/views/layout
. ΠΠ»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π»Π΅ΠΉΠ°ΡΡΠ°
ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΊΠΎΠ΄ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π² ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ
ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π»Π΅ΠΉΠ°ΡΡ ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ°, Π΄Π»Ρ
ΡΡΠΎΠ³ΠΎ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ:
'layout' => '@dmitrybtn/yimp/views/layout',
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π°Π²ΠΈΠ³Π°ΡΠΎΡΠ° ΒΆ
Π ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΊΠ»Π°ΡΡ, ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΡ \dmitrybtn\yimp\Navigator. ΠΡΠΎΡ ΠΊΠ»Π°ΡΡ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ
Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ², ΠΌΠ΅Π½Ρ ΠΈ Ρ
Π»Π΅Π±Π½ΡΡ
ΠΊΡΠΎΡΠ΅ΠΊ ΠΈΠ· ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π² Π»Π΅ΠΉΠ°ΡΡ. ΠΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π½Π°ΡΡΡΠΎΠΈΡΡ
Π»Π΅Π²ΠΎΠ΅ ΠΌΠ΅Π½Ρ, Π²Π΅Π΄ΡΡΠ΅Π΅ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π²Π΅ΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊ:
namespace app\components;
class Navigator extends \dmitrybtn\yimp\Navigator
{
public function init()
{
parent::init();
$this->menuLeft = [
['label' => 'Main menu'],
['label' => 'About', 'url' => ['/site/about']],
];
}
}
Π ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ nav, ΡΠ²Π»ΡΡΡΠ΅Π΅ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° Navigator. Π Π΄Π΅ΠΉΡΡΠ²ΠΈΡΡ
ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π½ΡΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ
ΠΏΠΎΠ»Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π° nav, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌ, ΠΌΠ΅Π½Ρ ΠΈ Ρ
Π»Π΅Π±Π½ΡΠΌ ΠΊΡΠΎΡΠΊΠ°ΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊ:
class SiteController extends \yii\web\Controller
{
public $nav;
public function init()
{
parent::init();
$this->nav = new Navigator();
}
public function actionAbout()
{
$this->nav->title = 'About';
return $this->render('about');
}
...
}
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Gii ΒΆ
Π ΡΠΎΡΡΠ°Π² YIMP Π²Ρ
ΠΎΠ΄ΡΡ ΡΠ°Π±Π»ΠΎΠ½Ρ Π΄Π»Ρ CRUD ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ². ΠΠ»Ρ ΠΈΡ
ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ:
'modules' => [
...
'gii' => [
'class' => 'yii\gii\Module',
'allowedIPs' => ['127.0.0.1', '::1'],
'generators' => [
'crud' => [
'class' => 'yii\gii\generators\crud\Generator',
'templates' => [
'yimp' => '@dmitrybtn/yimp/gii/crud'
]
],
'controller' => [
'class' => 'yii\gii\generators\controller\Generator',
'templates' => [
'yimp' => '@dmitrybtn/yimp/gii/controller'
]
]
],
...
]
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ErrorAction ΒΆ
Π ΡΠΎΡΡΠ°Π² YIMP Π²Ρ
ΠΎΠ΄ΠΈΡ ErrorAction, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π½Π° Yii.
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΒΆ
ΠΠ»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π°Π²ΠΈΠ³Π°ΡΠΎΡΠ° ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ²
ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π² Π½Π΅ΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ nav
. ΠΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΎΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ.
ΠΠ΅Π²ΠΎΠ΅ ΠΌΠ΅Π½Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΌΠ΅Π½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ΅ΡΡ
Π½Π΅Π΅ ΠΌΠ΅Π½Ρ - Π΄Π»Ρ ΠΎΠΏΡΠΈΠΉ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (Π»ΠΎΠ³ΠΈΠ½,
Π»ΠΎΠ³Π°ΡΡ, Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΎΡΠΈΠ»Ρ). ΠΡΠ°Π²ΠΎΠ΅ ΠΌΠ΅Π½Ρ - Π΄Π»Ρ ΠΎΠΏΡΠΈΠΉ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ View ΡΠ°ΠΌ Π±ΡΠ΄ΡΡ ΠΏΡΠ½ΠΊΡΡ Update
ΠΈ Delete). ΠΠ΅Π²ΠΎΠ΅ ΠΈ Π²Π΅ΡΡ
Π½Π΅Π΅ ΠΌΠ΅Π½Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π½Π°ΡΡΡΠΎΠΈΡΡ Π² Π²Π°ΡΠ΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° Navigator, Π° ΠΏΡΠ°Π²ΠΎΠ΅ ΠΌΠ΅Π½Ρ - Π² ΠΊΠΎΠ΄Π΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ.
ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΈ Ρ
Π»Π΅Π±Π½ΡΠ΅ ΠΊΡΠΎΡΠΊΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠ΅ΡΠ΅Π· ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊ:
class OrderController extends \yii\web\Controller
{
public $nav;
public function init()
{
parent::init();
$this->nav = new Navigator();
}
public static function titleIndex()
{
return 'ΠΠ°ΠΊΠ°Π·Ρ';
}
public static function titleView($order)
{
return 'ΠΠ°ΠΊΠ°Π· β ' . $order->id;
}
public static function crumbsToIndex()
{
return [
['label' => static::titleIndex(), 'url' => ['index']]
];
}
public function actionIndex()
{
...
$this->nav->title = static::titleIndex();
...
}
public function actionView()
{
...
$this->nav->title = static::titleView();
$this->nav->crumbs = static::crumbsToIndex();
...
}
}
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΠ»Π°ΡΡ OrderController ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° Π·Π°ΠΊΠ°Π·Ρ. ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ order/index Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅Π΅Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ "ΠΠ°ΠΊΠ°Π·Ρ". ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ,
ΡΡΠΎ ΡΠ»ΠΎΠ²ΠΎ "ΠΠ°ΠΊΠ°Π·Ρ" ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΡΠ½ΠΊΡΠΎΠΌ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΡΡΡΡ Ρ
Π»Π΅Π±Π½ΡΡ
ΠΊΡΠΎΡΠ΅ΠΊ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ
Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ.
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ ΡΠ»ΠΎΠ²ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ· Π»ΡΠ±ΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π²ΡΠ·Π²Π°Π² ΠΌΠ΅ΡΠΎΠ΄ OrderController::titleIndex()
.
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Ρ Ρ
Π»Π΅Π±Π½ΡΠΌΠΈ ΠΊΡΠΎΡΠΊΠ°ΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡ ItemController, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠΈΠΉ Π·Π° ΡΠΎΠ²Π°ΡΡ Π² Π·Π°ΠΊΠ°Π·Π΅, ΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅
item/create
ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Ρ
Π»Π΅Π±Π½ΡΠ΅ ΠΊΡΠΎΡΠΊΠΈ "ΠΠ»Π°Π²Π½Π°Ρ / ΠΠ°ΠΊΠ°Π·Ρ / ΠΠ°ΠΊΠ°Π· β 1 / ΠΠΎΠ±Π°Π²ΠΈΡΡ ΡΠΎΠ²Π°Ρ". ΠΠ»Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΊΠΈΡ
Ρ
Π»Π΅Π±Π½ΡΡ
ΠΊΡΠΎΡΠ΅ΠΊ Π² ΠΊΠ»Π°ΡΡΠ΅ ItemController Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°ΡΡ $this->nav->crumbs = OrderController::crumbsToView($item->order)
.
ΠΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² ΡΠ°Π±Π»ΠΎΠ½Π°Ρ
Gii, Π²Ρ
ΠΎΠ΄ΡΡΠΈΡ
Π² ΡΠΎΡΡΠ°Π² YIMP.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΒΆ
ΠΠΈΠ΄ΠΆΠ΅ΡΡ ΒΆ
Π‘Π²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ Π² ΡΡΡΠ΅ΡΠ΅ ΠΈ Π±ΠΎΠΊΠΎΠ²ΡΡ
ΠΏΠ°Π½Π΅Π»ΡΡ
ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ Π΄Π»Ρ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ². ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ²Π΅ΡΡΠΈ Π²ΠΈΠ΄ΠΆΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ
Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π² ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π±Π»ΠΎΠΊ:
<?php $this->beginBlock(Yimp::SIDEBAR_RIGHT); ?>
<div class="border rounded p-3 mt-3">
<div class="h5">Caption</div>
Your widget HTML
</div>
<?php $this->endBlock(); ?>
ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±Π»ΠΎΠΊΠΎΠ² Π² YIMP ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Yimp::SIDEBAR_LEFT
, Yimp::SIDEBAR_RIGHT
, Yimp::FOOTER
.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π±ΠΎΠΊΠΎΠ²ΡΠ΅ ΠΏΠ°Π½Π΅Π»ΠΈ Ρ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°ΠΌΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° Π±ΠΎΠ»ΡΡΠΈΡ
ΡΠΊΡΠ°Π½Π°Ρ
(xl). ΠΠ»Ρ ΠΌΠ΅Π½ΡΡΠΈΡ
ΡΠΊΡΠ°Π½ΠΎΠ²
ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΡΠΎΠΌΡ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π² ΡΠΎΡΠΌΠ΅.
ΠΠΊΠΎΠ½ΠΊΠΈ ΒΆ
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Bootstrap 4 Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΈΠΊΠΎΠ½ΠΊΠΈ, Π² YIMP ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΈΠΊΠΎΠ½ΠΊΠΈ ΠΎΡ FontAwesome.
ΠΠ½ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΡΡΡΠΎΠ² YIMP, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ
Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ
Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊ FontAwesome.
ΠΠ΅Π½Ρ ΒΆ
ΠΠ»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π»Π΅Π²ΠΎΠ³ΠΎ, ΠΏΡΠ°Π²ΠΎΠ³ΠΎ ΠΈ Π²Π΅ΡΡ
Π½Π΅Π³ΠΎ ΠΌΠ΅Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π½Π°Π²ΠΈΠ³Π°ΡΠΎΡΠ° menuLeft
, menuRight
ΠΈ menuTop
.
Π ΡΡΠΈΡ
ΡΠ²ΠΎΠΉΡΡΠ²Π°Ρ
Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π΄Π»Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π° items ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° yiisoft/bootstrap4/Nav, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΊ:
public function actionIndex()
{
...
$this->nav->menuRight = [
['label' => 'Options'],
['label' => static::titleCreate(), 'url' => ['create']],
];
...
}
ΠΠΎΠΌΠΈΠΌΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ
Π½Π°ΡΡΡΠΎΠ΅ΠΊ, ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ:
active
: Π ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠΌ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ΅ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ bool. Π YIMP ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΠΌΠ°ΡΠΊΠ΅ ΠΌΠ°ΡΡΡΡΡΠ°.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π΄Π»Ρ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Ρ ΡΠΊΠ°Π·Π°ΡΡ 'active' => 'order/*'
, ΠΏΡΠ½ΠΊΡ Π±ΡΠ΄Π΅Ρ Π°ΠΊΡΠΈΠ²Π΅Π½ Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΈΠ· OrderController.
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΡΠΌ. MenuAdapter, RouteHelper.
visibleMode
: YIMP ΡΠ΅Π½Π΄Π΅ΡΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΌΠ΅Π½Ρ Π΄Π²Π°ΠΆΠ΄Ρ - Π΄Π»Ρ Π΄Π΅ΡΠΊΡΠΎΠΏΠΎΠ² ΠΈ Π΄Π»Ρ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ
ΡΡΡΡΠΎΠΉΡΡΠ². ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π²ΡΠ²Π΅ΡΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ
ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΡΡΡΡΠΎΠΉΡΡΠ², ΡΠΊΠ°ΠΆΠΈΡΠ΅ Π·Π΄Π΅ΡΡ Yimp::DESKTOP
ΠΈΠ»ΠΈ YIMP::MOBILE
. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠ° Π½Π°ΡΡΡΠΎΠΉΠΊΠ°
Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΡΠ²ΡΠ·Π°Π½Π° Ρ CSS.
Π‘ΡΠΈΠ»ΠΈΠ·Π°ΡΠΈΡ ΒΆ
YIMP Π½Π°ΠΏΠΈΡΠ°Π½ Ρ ΡΠ°ΡΡΠ΅ΡΠΎΠΌ Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Bootstrap 4. ΠΡΠ΅, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ
Bootstrap 4, ΡΠ΄Π΅Π»Π°Π½ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π΄Π»Ρ ΡΠ°ΡΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΡΠΈΠ»ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Bootstrap 4 Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ²Π΅ΡΠΎΠ². Π‘ΡΠΈΠ»ΠΈ Yimp Ρ
ΡΠ°Π½ΡΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅ vendor\dmitrybtn\yii2-yimp\assets\css\yimp.scss.
ΠΡΠ»ΠΈ Π²Ρ ΡΠ΅ΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΡΡΠΈΠ»Π΅ΠΉ, ΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΡΡΠΈΠ»ΠΈ Bootstrap
ΠΈ ΡΡΠΈΠ»ΠΈ Yimp, ΡΠΊΠ°Π·Π°Π² Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
'assetManager' => [
'bundles' => [
'yii\bootstrap4\BootstrapAsset' => [
'css' => [],
],
'dmitrybtn\yimp\Asset' => [
'css' => [],
]
]
]