昨晚我正在从 symfony 的官方文档中学习 symfony,一切都工作正常,除非我觉得需要掌握 twig。 我在 Laravel 上工作了大约 6 - 8 个月,我真的很习惯它的环境,尤其是刀片引擎。问题是,我可以在 symphony 中使用 Blade 模板代替 twig 吗? 我尝试寻找它但找不到它。 预先感谢。
composer search blade
返回:
philo/laravel-blade Use the simple and yet powerful Laravel Blade templating engine as a standalone component.
duncan3dc/blade Use Laravel Blade templates without the full Laravel framework
看起来
philo/laravel-blade
有更多的维护者,至少根据 github 来看是这样。所以,应该是可以的。
注意:在 symfony v7+ 和 PHP 8.1 上测试
是的,完全可以这样做,我建议您使用 BladeOne,因为它是当前且积极维护的之一
第1步:使用composer安装包
composer require eftec/bladeone
第2步:创建一个新服务`src/Service/Helpers.php
namespace App\Service;
Use eftec\bladeone\BladeOne;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class Helpers
{
function __construct()
{
// nothing for now
}
function render($template, $data = [])
{
$views = __DIR__ . '/../../templates';
$cache = __DIR__ . '/../../var/cache';
$blade = new BladeOne($views, $cache, BladeOne::MODE_AUTO);
echo $blade->run($template, $data);
}
}
第3步:注册创建的服务
services:
# previous code
App\Service\Helpers:
autowire: true
第 4 步:在控制器中使用它
namespace App\Controller;
use App\Service\Helpers;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class PublicController extends AbstractController
{
# [Route('/', name: 'home')]
public function index(Helpers $helpers): Response
{
$helpers->render('public.index', ['title' => 'Public Page']);
return new Response();
}
}
第 5 步:将控制器调用到你的路线