2016-03-21 4 views
1

im mit symfony Anzeige las ich, dass die beste Praxis zum Speichern von Bild js und Bilder/web istWo speichern css und js in symfony

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

wenn ich assetic möchte ich Beispiel wie

verwenden Sie
{% javascripts '@AppBundle/Resources/public/js/*' output='js/compiled/main.js' %} 
    <script src="{{ asset_url }}"></script> 
{% endjavascripts %} 

wo @AppBundle von logischen Namen Bundle

logische Datei Names¶

ist

Wenn Sie eine Datei aus einem Bündel referenzieren möchten, verwenden Sie folgende Schreibweise: @ BUNDLE_NAME/pfad/zu/datei; Symfony wird @BUNDLE_NAME auf den realen Pfad zum Bundle auflösen. Zum Beispiel würde der logische Pfad @ AppBundle/Controller/DefaultController.php in src/AppBundle/Controller/DefaultController.php konvertiert werden, weil Symfony den Speicherort des AppBundle kennt.

Wo muss ich meine Assets speichern?

Antwort

1

sollten Sie Ihre css/js Dateien unter app/Resources/assets/css und app/Ressourcen/assets/js setzen

(Asset-Ordner kann Ordner "public" sein) Und später shoud Sie assetic verwenden zu setzen die endgültige app.css und app.js unter den Web-Ordnern (dies ist der öffentliche Ordner in symfony Projekten)

Dokumentation here (Widerspruch?) und here

+0

Ihre Antwort widerspricht Ihrem ersten Link. Vielleicht könntest du ein bisschen mehr erklären? – Cerad

+0

Sind Sie sicher, das Asset in App/Resources/assets/zu legen? – monkeyUser

+0

@cerad warum?Ich lege meine Assets (css und js) in meine pirvate Zone (app/Resources/assets) und später, mit assitetic, lege ich die finalen Dateien app.css und app.js in den öffentlichen Webordner. Ich denke, das ist richtig, oder? –

3

Wenn Sie nicht assetic sind, sollen Sie platzieren Sie Ihre öffentlich zugängliche Bilder und js im Verzeichnis/web.

Wenn Sie assetic verwenden, sollten Sie Ihre öffentlich zugänglichen Bilder und js in Ihrem @ AppBundle/Resources/public/css bzw. @ AppBundle/Resources/public/js platzieren. Dann müssen Sie assetic verwenden, assetic wird automatisch dafür sorgen, dass es der Öffentlichkeit zugänglich gemacht wird. Sie müssen sich darüber keine Gedanken machen, normalerweise filtert und kopiert es Ihre Dateien in Ihr/web-Verzeichnis.

Beispiel:

{% block javascripts %} 
    {% javascripts '@AppBundle/Resources/public/js/*' %} 
     <script src="{{ asset_url }}"></script> 
    {% endjavascripts %} 
{% endblock %} 

In diesem Beispiel werden alle Dateien im Resources/public/js/Verzeichnis des AppBundle wird von einem anderen Ort geladen und serviert. Die tatsächliche gemacht Tag könnte einfach wie folgt aussehen:

<script src="/app_dev.php/js/abcd123.js"></script> 

Für mehr Informationen, dies lesen: http://symfony.com/doc/2.8/cookbook/assetic/asset_management.html#installing-and-enabling-assetic

+0

Aber mit Assetic können Sie diese Assets beliebig manipulieren (oder sie von überall laden), bevor Sie sie bedienen. ok, aber was ist die beste Praxis? im Web o im Bundle speichern? weil in diesem Link http://symfony.com/doc/current/best_practices/web-assets.html#using-assetic die Assets in Web-Ordner sind – monkeyUser

+0

Ich denke, es ist sicher zu sagen, dass die Verwendung von Assetic als abgeraten wird Dies zeigt sich daran, dass es nicht einmal mehr standardmäßig gebündelt ist. Wenn deine Assets einfach sind, dann lege sie einfach unter/web/css und js ab. Wenn sie eine serverseitige Verarbeitung (Minimierung usw.) benötigen, verwenden Sie eines der vielen spezialisierten nodejs-Tools wie gulp, webpack oder browserify. – Cerad

+0

Ich stimme @Cerad zu. Wenn Sie Ihre Bundles in anderen Projekten wiederverwenden möchten, speichern Sie sie in Ihrem Bundle. – Ajir

1

Seit Symfony4.0, die Best Practice ist jetzt in einem neuen /assets Verzeichnis im root Verzeichnis.

Dies erleichtert Ihren Frontend-Entwicklern und -Designern die Arbeit, ohne in das Backend-Chaos zu geraten.