Add start of IconExtension class
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "pcm/bundle-name",
|
||||
"description": "bundle description",
|
||||
"name": "pcm/icon-bundle",
|
||||
"description": "Twig icon bundle",
|
||||
|
||||
"type": "symfony-bundle",
|
||||
"license": "MIT",
|
||||
@@ -19,7 +19,8 @@
|
||||
"symfony/dependency-injection": "^6.1",
|
||||
"symfony/framework-bundle": "^6.1",
|
||||
"symfony/yaml": "^6.1",
|
||||
"symfony/http-client": "^6.1"
|
||||
"symfony/http-client": "^6.1",
|
||||
"symfony/twig-bundle": "^6.1"
|
||||
},
|
||||
|
||||
"require-dev": {
|
||||
@@ -29,13 +30,13 @@
|
||||
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Pcm\\GeocodeBundle\\": "src/"
|
||||
"Pcm\\IconBundle\\": "src/"
|
||||
}
|
||||
},
|
||||
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"Pcm\\GeocodeBundle\\Tests\\": "tests/"
|
||||
"Pcm\\IconBundle\\Tests\\": "tests/"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,8 +3,12 @@ services:
|
||||
autowire: true
|
||||
autoconfigure: true
|
||||
|
||||
pcm_example.example_service:
|
||||
alias: Pcm\ExampleBundle\Service\ExampleService
|
||||
pcm_icon.icon_extension:
|
||||
alias: Pcm\IconBundle\Twig\Functions\IconExtension
|
||||
public: true
|
||||
|
||||
Pcm\ExampleBundle\Service\ExampleService: ~
|
||||
Pcm\IconBundle\Twig\Functions\IconExtension:
|
||||
public: false
|
||||
arguments:
|
||||
# $dir:
|
||||
# - '%kernel.project_dir%/public/icons'
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Pcm\ExampleBundle;
|
||||
namespace Pcm\IconBundle;
|
||||
|
||||
use Symfony\Component\Config\FileLocator;
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||
@@ -10,7 +10,7 @@ use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigura
|
||||
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
|
||||
use Symfony\Component\HttpKernel\Bundle\AbstractBundle;
|
||||
|
||||
class PcmExampleBundle extends AbstractBundle {
|
||||
class PcmIconBundle extends AbstractBundle {
|
||||
public function loadExtension(array $config, ContainerConfigurator $container, ContainerBuilder $builder): void
|
||||
{
|
||||
$loader = new YamlFileLoader($builder, new FileLocator(__DIR__.'/../config/'));
|
||||
25
src/Twig/Functions/IconExtension.php
Normal file
25
src/Twig/Functions/IconExtension.php
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Pcm\IconBundle\Twig\Functions;
|
||||
|
||||
use Twig\Extension\AbstractExtension;
|
||||
use Twig\TwigFunction;
|
||||
|
||||
final class IconExtension extends AbstractExtension
|
||||
{
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function getFunctions(): array
|
||||
{
|
||||
return [
|
||||
new TwigFunction('icon', [$this, 'render'], [
|
||||
'is_safe' => ['html']
|
||||
])
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
27
tests/Twig/Functions/IconExtensionTest.php
Normal file
27
tests/Twig/Functions/IconExtensionTest.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Pcm\IconBundle\Tests\Twig\Functions;
|
||||
|
||||
use Pcm\IconBundle\Twig\Functions\IconExtension;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class IconExtensionTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @var IconExtension
|
||||
*/
|
||||
private IconExtension $icon;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
$this->icon = new IconExtension();
|
||||
}
|
||||
|
||||
public function testInstanceOf(): void
|
||||
{
|
||||
$this->assertInstanceOf(IconExtension::class, $this->icon);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user