Symfony错误:"在呈现模板期间抛出异常"

Bij*_*net 8 php rendering symfony twig symfony4

我想包括

<link href="{{ asset('css/mystyle.css') }}"
      rel="stylesheet"/> 
Run Code Online (Sandbox Code Playgroud)

在我的twig文件中并渲染它.但它给了我未捕获的PHP异常Twig_Error_Runtime:

"在呈现模板期间抛出了异常("资产清单文件"/../public/build/manifest.json"不存在.")

它在我使用时确实有效

link href="css/mystyle.css"
          rel="stylesheet"/>
Run Code Online (Sandbox Code Playgroud)

.以下是我的控制器:

    <?php

namespace App\Controller;

use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;

class WelcomeController extends AbstractController
{
    /**
     * @Route("/", name="welcome")
     */
    public function index()
    {
        return $this->render('welcome/index.html.twig');
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是我的树枝模板:

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>Let's Explore Symfony 4</title>

    <!-- Bootstrap core CSS -->
    <link rel="stylesheet"
          href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.3/css/bootstrap.min.css"
          integrity="sha384-Zug+QiDoJOrZ5t4lssLdxGhVrurbmBWopoEl+M6BdEfwnCJZtKxi1KgxUyJq13dy"
          crossorigin="anonymous">

    <link href="{{ asset('css/mystyle.css') }}"
          rel="stylesheet"/>

</head>

<body>
<header>
    <nav class="navbar navbar-expand-sm navbar-dark bg-dark">
        <div class="container">

            <a class="navbar-brand" href="#">Home</a>

            <div class="collapse navbar-collapse">
                <ul class="navbar-nav mr-auto">
                    <li class="nav-item">
                        <a class="nav-link" href="#">Hello Page</a>
                    </li>
                </ul>
            </div>
        </div>

    </nav>
</header>

<main role="main" class="container main">
    <div>
        <h1>Let's Explore Symfony 4</h1>
        <p class="lead">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras rutrum sapien mauris, venenatis
            facilisis neque tincidunt vel. Maecenas vel felis vel turpis scelerisque eleifend. Fusce nec purus egestas,
            efficitur nisi ac, ultrices nulla. Pellentesque eu mollis tortor, in mollis nisl. Maecenas rhoncus quam non
            lacinia mollis.</p>
    </div>
</main>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

Sar*_*mar 10

执行以下命令:

yarn add --dev @symfony/webpack-encore

yarn add webpack-notifier --dev

yarn encore dev
Run Code Online (Sandbox Code Playgroud)

它将生成manifest.json文件

  • 这是正确的答案。对我来说,在使用“composer”安装 Webpack Encore 后运行“yarn install”和“yarn encore dev”就足够了。官方[文档](https://symfony.com/doc/current/frontend/encore/simple-example.html)非常好并且包含所有内容。 (2认同)

Ham*_*yun 9

我已经通过不使用 json_manifest_path 解决了这个问题:~

通过在 json_manifest_path 前面添加 '#' 并在 'assets:' 之后添加 '~' 来注释掉它

framework:
    assets: ~
        #json_manifest_path: '%kernel.project_dir%/public/build/manifest.json'
Run Code Online (Sandbox Code Playgroud)


小智 3

manifest.json 是 Symfony 3.3 中的新增内容。

因此,您的配置文件中应该包含以下几行:

# app/config/config.yml
framework:
    # ...
    assets:
        json_manifest_path: '%kernel.root_dir%/../web/build/manifest.json'
Run Code Online (Sandbox Code Playgroud)

如果manifest.json不存在,您应该创建它,如下所示:

{ "css/app.css": "build/css/mystyle.b916426ea1d10021f3f17ce8031f93c2.css", "...": "..." }