2016-07-01 14 views
1

Ich bin relativ neu in dieser ganzen MVC-Struktur für Web-Anwendungen.MVC - CSS-Links

Hier ist die Struktur meines Projekts.

enter image description here

Die Datei, die Sie auf der rechten Seite des Bildes sehen, ist in den Ordner ‚Ansichten‘.

Wenn ich eine CSS-Datei verknüpfen möchten, warum hat der Weg href="/css/stylePortfolio.css"

Warum sein, ist es nicht href="../../public/css/stylePortfolio.css"?

+0

Wie hast du das Bootstrap? – Chay22

+0

@ Chay22 was meinst du genau? – padawanTony

+0

Da Ihr Site-Stammpfad der Ordner index.php ist, Ihr öffentlicher Ordner, wenn Sie einen CSS-Ordner haben. – amiceli

Antwort

1

Was Sie sehen, ist der HTML-Code, der an den Browser des Benutzers gesendet wird. Der Browser weiß nichts über die Struktur Ihrer Anwendung. Es liest einfach, dass href Link, und lädt die Datei von http://example.com<link>, wo <link> ist /css/main.css zum Beispiel.

Wenn richtig konfiguriert ist, die Webstamm Ihre Website ist in Ihren /public Ordnern. Das heißt, alles, was ein Browser anfordert, ist relativ zu Ihrem Webstamm. Wenn Sie also eine Verbindung zu einer CSS-Datei herstellen möchten, müssen Sie sich diesen Link relativ zu Ihren Projekten web root, nicht relativ zu Ihrem Projektstamm vorstellen. Ein Beispiel: Sagen wir, Sie erstellen ein neues Projekt in /home/user/AwesomePhpProject. Jetzt /home/user/AwesomePhpProject heißt Ihr Projekt-Stamm.

In Ihrem Projektstamm erstellen Sie ein Verzeichnis, public. Sie konfigurieren dieses Verzeichnis als Ihren Webstamm, unter Verwendung von VirtualHost (bei Verwendung von Apache) oder root (bei Verwendung von Nginx). /home/user/AwesomePhpProject/public ist jetzt Ihre Web-Wurzel. Wenn ein Browser /css/main.css anfordert, wird er an /css/main.cssrelativ an Ihren Webstamm weitergeleitet. In unserem Fall wird das /home/user/AwesomePhpProject/public/css/main.css sein.

Die meisten modernen Anwendungen trennen das Projekt und den Webstamm aus Sicherheitsgründen.

+0

Vielen Dank für Ihre Antwort. Ich beginne zu verstehen. Könntest du ein wenig weiter ausführen? Beispiel: Was ist ein Webstamm? Was ist eine Projektwurzel? Wie sind sie getrennt? – padawanTony

+0

Ein Beispiel – Pete

0

Es ist, weil Front-End-Verbindungen (wie CSS und JS) aus der aktuellen Datei relativ sind in Sie sind. Und da Ihre Wurzel in public ist haben Sie URL aus diesem Verzeichnis angeben (Sie können nicht zu einem verknüpfen Datei in der obersten Ebene von root).

2

Da sich Ihr index.php im öffentlichen Ordner befindet, werden alle Ansichten in den Öffentlichen Ordner geladen. Deshalb sollten Sie den CSS-Pfad vom öffentlichen Root deklarieren. Sie können den Pfad bei Bedarf ändern.

In diesem Fall können Sie eine globale Variable oder konstant Ihre Haupt-Controller mit dem Pfad Ihres CSS-Ordner diese

define('CSS_PATH', 'http://localhost/fab/public/css/'); 

Jetzt wie

<link rel="stylesheet" href="<?=CSS_PATH?>bootstrap.css"> 
+0

hinzugefügt, wenn ich dies tue bekomme ich den Fehler 'Ressource interpretiert als Stylesheet aber mit MIME-Typ text/html übertragen:" http://fab.app/fab.app/public/css/bootstrap.min.css ".' – padawanTony

+0

Fügen Sie das zu Ihrem' .htaccess' hinzu und lassen Sie mich 'AddType Text/css .css' wissen – WebDevRon

+0

Ich tat es. Kein Unterschied. Das Problem ist, dass der Pfad falsch ist. Es ist "http: // fab.app/fab.app/public/css/bootstrap.min.css" , wenn es sein sollte "" http: // fab.app/css/bootstrap.min.css " – padawanTony

0

Why is it not href="../../public/css/stylePortfolio.css"?

verwenden erklären

Da Eingangspunkt Ihrer MVC Index.php von Pub ist lic Ordner. Also sollten alle Ihre css und js Links relativ zum öffentlichen Ordner sein