neirda24 / liipthemeprovider
允许为主题列表创建一些自定义提供者。
这个包的官方仓库似乎已经不存在,因此该包已被冻结。
1.1.6
2015-12-11 14:35 UTC
Requires
- php: ^5.3.9|^7.0
- liip/theme-bundle: ~1
README
安装
步骤 1:下载包
打开命令行控制台,进入您的项目目录,然后执行以下命令以下载此包的最新稳定版本
$ composer require neirda24/liipthemeprovider "~1"
此命令要求您全局安装了Composer,具体请参阅Composer文档中的安装章节。
步骤 2:启用包
然后,将包添加到项目 app/AppKernel.php
文件中注册的包列表中,以启用该包
<?php // app/AppKernel.php // ... class AppKernel extends Kernel { public function registerBundles() { $bundles = array( // ... new Neirda\Bundle\LiipThemeProvider\LiipThemeProviderBundle(), ); // ... } // ... }
如何使用
步骤 1:创建提供者类
<?php // src/AppBundle/ThemeProvider use Neirda\Bundle\LiipThemeProvider\ThemeProviderInterface; // ... class ThemeProvider implements ThemeProviderInterface { /** * {@inheritdoc} */ public function getThemeList() { // implement your logic here... // it should return an array event if it is empty } // ... }
步骤 2:声明服务
您的服务必须带有 liip_theme_provider.theme_provider
标签。
XML
... <services> ... <service id="app.theme.provider" class="AppBundle\ThemeProvider\ThemeProvider"> <tag name="liip_theme_provider.theme_provider" /> </service> ... </services> ...
完成!!
示例
创建此类
<?php // src/AppBundle/ThemeProvider use Neirda\Bundle\LiipThemeProvider\Theme\ThemeProviderInterface; use Symfony\Component\Finder\Finder; use Symfony\Component\Finder\SplFileInfo; class ThemeProvider implements ThemeProviderInterface { /** * @const THEMES_PATH */ const THEMES_PATH = 'src/AppBundle/Resources/themes'; /** * @var string */ protected $rootDir; /** * @var null|array */ protected $themeList = null; /** * Constructor. * * @param string $rootDir */ public function __construct($rootDir) { $this->rootDir = $rootDir; } /** * {@inheritdoc} */ public function getThemeList() { if (!is_array($this->themeList)) { $path = rtrim($this->rootDir, '/') . '/' . ltrim(static::THEMES_PATH, '/'); $themes = new Finder(); $themes->directories()->depth('== 0')->in($path); $themeList = []; foreach ($themes as $theme) { /** @var SplFileInfo $theme */ $themeList[] = $theme->getFilename(); } $this->themeList = $themeList; } return $this->themeList; } }
并声明您的服务
xml
... <services> <service id="app.theme.provider" class="AppBundle\Provider\ThemeProvider"> <argument>%kernel.root_dir%/../</argument> <tag name="liip_theme_provider.theme_provider" /> </service> </services> ...
现在,您只需要创建一个新文件夹,它将被自动添加到可用的主题中。