如何在没有 symfony 的情况下使用 Twig 路径、表单、资产、路由

How to use Twig path, form, asset, routes without symfony

我有一个自定义的 MVC 网站,我想将这个网站移至 Symfony。

我认为我必须分两部分完成此操作:将模板移至 Twig,然后安装 Symfony。

安装了 Composer,我使用 Twig 和一些 Symfony 包。

我正在努力将模板移动到 Twig,这个很管用。

但是为了赢得时间,我的 Twig 模板必须是完美的,因为我必须更新所有页面。

一切顺利,但我没有找到所有回复。

你知道怎么用吗

没有 symfony ?

非常感谢!!!

我不能一次为 Symfony 移动。我必须在没有 Symfony 的情况下使用 Twig 最终代码逐步完成此操作:-)

找到路径的解决方案。

我已经创建了一个 Twig 扩展,这个很管用,我想我也可以做同样的事情 对于资产。

我的扩展代码像调试扩展一样工作:

<?php

namespace Twig\Extension {
use Twig\TwigFunction;
use App\MyApp\Config;

final class MyAppExtension extends AbstractExtension
{
    public function getFunctions(): array {
        return [
            new TwigFunction('path', 'twig_path', ['is_safe' => $isDumpOutputHtmlSafe ? ['html'] : [], 'needs_context' => true, 'needs_environment' => true, 'is_variadic' => true]),
        ];
    }
}
}

namespace {

    use App\MyApp\Config;
    use Twig\Environment;
use Twig\Template;
use Twig\TemplateWrapper;

    function twig_path(Environment $env, $context, ...$vars)
    {
        ob_start();

        $url = [Array_with_my_path];
        echo $url[$vars[0]];
        foreach ($vars[1] as $key => $param_id) {
            echo $param_id;
            break;
        }
        return ob_get_clean();
    }
}

在 Twig 中:{{ path('fichiers.view', {'fichierId' : fichier.fichier_id}) }} 与 Symfony 一样 !!!

在我的控制器中:

$loader = new FilesystemLoader(DOCROOT.'templates/');
    $twig = new Environment($loader,[
        'debug' => true,
        'path' => true
    ]);
    $twig->addExtension(new DebugExtension());
    $twig->addExtension(new MyAppExtension());
    $menu = new Menu($this->controller);

同样的方法适用于资产。 {{ asset('assets/vendor/nova-icons/nova-icons.css') }}

我在独立的 MVC 中找到了 Form 的解决方案。

Link 对于解释如何做的 symfony 文档:https://www.bookstack.cn/read/symfony-v4.3/9e14e755983b348b.md

这有效。

我的问题已经解决了