wake-up-neo.com

Symfony-Fehler: "Beim Rendern einer Vorlage wurde eine Ausnahme ausgelöst"

Ich versuche einzubeziehen 

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

in meiner twig-Datei und rendern. Aber es gibt mir Nicht erfasste PHP Ausnahme Twig_Error_Runtime:  

"Beim Rendern einer Vorlage wurde eine Ausnahme ausgelöst (" Asset - Manifestdatei "/../public/build/manifest.json" existiert nicht . ".)

Es funktioniert, wenn ich benutze 

link href="css/mystyle.css"
          rel="stylesheet"/>

. Folgendes ist mein Controller:

    <?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');
    }
}

Folgendes ist meine Zweigvorlage:

<!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>

Wie kann ich dieses Problem lösen?

8
Bijaya Basnet

Führen Sie die folgenden Befehle aus:

yarn add --dev @symfony/webpack-encore

yarn add webpack-notifier --dev

yarn encore dev

Die Datei manifest.json wird generiert

7
Sarath Kumar

Installieren Sie Assets Bundle:

composer require symfony/asset
0

Denken Sie daran, dass die Frage mit Symfony4 markiert ist!

Ich habe die gleiche Ausgabe, um Logo in Navbar, Favicon hinzuzufügen ...

In Symfony4 gibt es kein app -Verzeichnis mehr, daher gibt es kein app/config/config.yml! In Symfony4 existiert das web -Verzeichnis nicht mehr, aber es gibt ein neues Verzeichnis Öffentlichkeit

Wie @Bijaya schrieb, geben Sie einfach die Adresse href oder src in der Öffentlichkeit an

In meinem Fall habe ich mein Logo: meinProjektname/public/logo_mom.png

und in meinem Controller habe ich:

/**
 * @Route("/", name="home")
 */
public function home() {
    return $this->render('blog/home.html.twig', [
        'title' => "Bienvenue",
        'logo_path' => "logo_mom.png",
        'logo_alt' => "logo alt description",
    ]);
}

und in meinem home.html.twig:

{% block body %}
    <h1>{{ title }}</h1>
    <img src={{ logo_path }} alt={{ logo_alt}}>

und in meiner template/base.html.twig:

<link rel="icon" type="image/x-icon" href="favicon.ico" />

Für mich, der Symfony4 ohne vorherige Symfony-Versionskenntnisse entdeckt, ist es Nizza, das keine Asset-Funktion oder andere Konfigurationen erfordert!

0
bcag2

manifest.json ist neu in Symfony 3.3.

Sie sollten also diese Zeilen in Ihrer Konfigurationsdatei haben: 

# app/config/config.yml
framework:
    # ...
    assets:
        json_manifest_path: '%kernel.root_dir%/../web/build/manifest.json'

Wenn manifest.json nicht existiert, sollten Sie es wie folgt erstellen: 

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

0
Allan

yarn encore dev-server --hot erstellt die Datei manifest.json

0
nadjib chiheb

Ich habe dieses Problem behoben, indem Sie json_manifest_path nicht verwendet: ~

kommentieren Sie den json_manifest_path aus, indem Sie "#" davor hinzufügen und "~" nach "assets:" hinzufügen.

framework:
    assets: ~
        #json_manifest_path: '%kernel.project_dir%/public/build/manifest.json'
0
Ham Dong Kyun