flyo / nitro-yii2
Flyo Nitro Yii2 框架模块
1.0.0
2024-04-30 06:52 UTC
Requires
- flyo/nitro-php: ^1.0
- flyo/nitro-php-bridge: ^1.1
- yiisoft/yii2: ^2.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.2
- phpstan/phpstan: ^1.7
- phpunit/phpunit: ^11.0
README
composer require flyo/nitro-yii2
将模块添加到您的配置中
'modules' => [ 'flyo' => [ 'class' => \Flyo\Yii\Module::class, 'token' => 'YOUR_TOKEN', ] ]
在 /views/nitro.php
文件夹中添加 CMS 页面解析,flyo nitro 的所有路由现在都将解析到这个视图文件
<?php use Flyo\Yii\Widgets\PageWidget; /** @var \Flyo\Model\Page $page */ ?> <h1><?= $page->getTitle(); ?> <?= PageWidget::widget(['page' => $page]); ?>
为了渲染这些块,请使用 Flyo\Yii\Widgets\PageWidget
,它将在 /views/flyo/*
文件夹内查找所有块,例如,如果您在 flyo 中定义了一个 HeroTeaser
组件,则视图文件存储在 /views/flyo/HeroTeaser.php
中,并包含示例内容
/** @var \Flyo\Model\Block $block */ print_r($block->getContent()); print_r($block->getConfig()); print_r($block->getItems()); print_r($block->getSlots());
布局
在布局文件中生成导航,使用 NavWidget
<?php $nav = ContainerWidget::begin(['identifier' => 'main']) ?> <ul> <?php foreach ($nav->getItems() as $item): ?> <li><?= Html::a($item->getLabel(), $item->getHref()); ?></li> <?php endforeach; ?> </ul> <?php $nav::end(); ?>
具有子块的布局块
一个示例,其中包含子块的块,定义在 content
插槽中
<?php use Flyo\Yii\Widgets\BlockWidget; /** @var \Flyo\Model\Block $block */ $config = $block->getConfig(); ?> <div class="container"> <?php foreach ($block->getSlots()['content']->getContent() as $childBlock): ?> <div class="w-full"> <?= BlockWidget::widget([ 'block' => $childBlock, ]); ?> </div> <?php endforeach; ?> </div> <?php SectionWidget::end(); ?>
扩展现有路由
可以扩展现有页面的路由系统。这在构建需要确保您仍然在同一个 CMS 页面(而不是实体详情)的动态子页面时非常有用。为此,请将以下 URL 规则在 URLManager 部分添加
'<path:(the-requested-slug)>/<slug:[a-z\-]+>' => 'flyo/nitro/index',
要链接到扩展路由,由于这是路由中的固定规则,因此无法使用 Url::toRoute,您必须使用
<a href="/the-requested-slug/<?= ...; ?>">Detail</a>