slim / twig-view
Slim 框架 4 视图助手,基于 Twig 3 模板组件构建
3.4.0
2024-04-28 20:36 UTC
Requires
- php: ^7.4 || ^8.0
- psr/http-message: ^1.1 || ^2.0
- slim/slim: ^4.12
- symfony/polyfill-php81: ^1.29
- twig/twig: ^3.8
Requires (Dev)
- phpspec/prophecy-phpunit: ^2.0
- phpstan/phpstan: ^1.10.59
- phpunit/phpunit: ^9.6
- psr/http-factory: ^1.0
- squizlabs/php_codesniffer: ^3.9
This package is auto-updated.
Last update: 2024-09-01 06:08:16 UTC
README
这是一个基于 Twig 模板组件构建的 Slim 框架视图助手。您可以使用此组件在 Slim 框架应用程序中创建和渲染模板。
安装
通过 Composer
composer require slim/twig-view
需要 Slim 框架 4、Twig 3 和 PHP 7.4 或更高版本。
用法
使用依赖注入容器
use DI\Container; use Slim\Factory\AppFactory; use Slim\Views\Twig; use Slim\Views\TwigMiddleware; require __DIR__ . '/../vendor/autoload.php'; // Create Container $container = new Container(); // Set view in Container $container->set(Twig::class, function() { return Twig::create(__DIR__ . '/../templates', ['cache' => 'path/to/cache']); }); // Create App from container $app = AppFactory::createFromContainer($container); // Add Twig-View Middleware $app->add(TwigMiddleware::create($app, $container->get(Twig::class))); // Add other middleware $app->addRoutingMiddleware(); $app->addErrorMiddleware(true, true, true); // Render from template file templates/profile.html.twig $app->get('/hello/{name}', function ($request, $response, $args) { $viewData = [ 'name' => $args['name'], ]; $twig = $this->get(Twig::class); return $twig->render($response, 'profile.html.twig', $viewData); })->setName('profile'); // Render from string $app->get('/hi/{name}', function ($request, $response, $args) { $viewData = [ 'name' => $args['name'], ]; $twig = $this->get(Twig::class); $str = $twig->fetchFromString('<p>Hi, my name is {{ name }}.</p>', $viewData); $response->getBody()->write($str); return $response; }); // Run app $app->run();
不使用依赖注入容器
use Slim\Factory\AppFactory; use Slim\Views\Twig; use Slim\Views\TwigMiddleware; require __DIR__ . '/../vendor/autoload.php'; // Create App $app = AppFactory::create(); // Create Twig $twig = Twig::create('path/to/templates', ['cache' => 'path/to/cache']); // Add Twig-View Middleware $app->add(TwigMiddleware::create($app, $twig)); // Define named route $app->get('/hello/{name}', function ($request, $response, $args) { $view = Twig::fromRequest($request); return $view->render($response, 'profile.html.twig', [ 'name' => $args['name'] ]); })->setName('profile'); // Render from string $app->get('/hi/{name}', function ($request, $response, $args) { $view = Twig::fromRequest($request); $str = $view->fetchFromString( '<p>Hi, my name is {{ name }}.</p>', [ 'name' => $args['name'] ] ); $response->getBody()->write($str); return $response; }); // Run app $app->run();
自定义模板函数
TwigExtension
为您的 Twig 模板提供以下函数
url_for()
- 返回给定路由的 URL。例如:/hello/worldfull_url_for()
- 返回给定路由的 URL。例如:https://www.example.com/hello/worldis_current_url()
- 如果提供的路由名称和参数对当前路径有效,则返回 true。current_url()
- 返回当前路径,包括或不包括查询字符串。get_uri()
- 从传入的ServerRequestInterface
对象返回UriInterface
对象base_path()
- 返回基本路径。
您可以使用 url_for
生成指向任何 Slim 应用程序命名路由的完整 URL,并使用 is_current_url
确定是否需要将链接标记为活动状态,如本示例 Twig 模板所示
<h1>User List</h1> <ul> <li><a href="{{ url_for('profile', { 'name': 'josh' }) }}" {% if is_current_url('profile', { 'name': 'josh' }) %}class="active"{% endif %}>Josh</a></li> <li><a href="{{ url_for('profile', { 'name': 'andrew' }) }}">Andrew</a></li> </ul>
测试
要执行测试套件,您需要克隆存储库并安装依赖项。
$ git clone https://github.com/slimphp/Twig-View
$ composer install
$ composer test
贡献
有关详细信息,请参阅 CONTRIBUTING
安全
如果您发现任何安全相关的问题,请通过电子邮件 [email protected] 而不是使用问题跟踪器。
鸣谢
许可
MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件