Css, JS метод включения - PullRequest
       9

Css, JS метод включения

2 голосов
/ 29 октября 2011

Это концептуальный вопрос. Каков наилучший способ включить ресурсы, такие как CSS, Javascript на страницу HTML ... Я внедряю свою собственную конструкцию MVC. Применение Directroy Structer является

index.php
controllers
  c1.php
  c2.php
    ...
views
  v1.php
  v2.php
    ...
scripts
  s1.js
  s2.js
    ...
styles
  style1.css
  style2.css
    ...

Как вы можете видеть, все запросы поступают через index.php, и затем я нахожу правильный элемент управления для его обработки. Контроллер обрабатывает некоторую бизнес-логику, затем включает файл представления.

В файле представления мне нужно указать абсолютный путь ко всем скриптам css и java, как это;

<link rel="stylesheet" type="text/css" href="<?php echo APPROOT; ?>/styles/master.css" />'
<script type="text/javascript" src="<?php echo APPROOT; ?>/scripts/jquery-1.6.1.min.js"></script>

APPROOT - это константа, которая определяет путь к каталогу для приложения:

define("APPROOT", "/project1");

Я думаю, что это не самый лучший способ, так как я могу улучшить его?

Ответы [ 2 ]

2 голосов
/ 29 октября 2011

Обычно вы хотите, чтобы ваше приложение находилось вне общедоступного каталога и создавало путь включения, который ведет к нему. Таким образом, вы можете написать свой URL переписать, чтобы просто перенаправить в index.php, только если файл по указанному пути не существует. В htaccess это будет выглядеть примерно так.

# redirect any requests for missing files to index.php
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php/$1 [L]

Таким образом, если запрашиваемый файл действительно существует в общем каталоге, apache будет просто обслуживать этот файл как обычно, но если запрашиваемый файл не существует, он будет перенаправить в index.php для обработки MVC.

Чтобы создать путь включения, который ведет к каталогу вашего приложения, см. Следующую документацию:

http://php.net/manual/en/function.set-include-path.php

Вы также можете установить пути включения через inis.

1 голос
/ 30 октября 2011

По моему мнению, правильный путь - это делать то, что делает Зенд. Он может или не может быть совместим с вашим кодом.

$this->view->headLink()->appendStylesheet($this->view->baseUrl().'/css/style.css');
$this->view->headScript()->appendFile($this->view->baseUrl().'/js/jquery.js','text/javascript',array('language'=>'javascript'));
но я сомневаюсь в вашем способе, @dqhendricks имеет хорошее мнение, и я думаю, что вы должны взглянуть на этот учебник и пересмотреть свой подход к структуре. http://anantgarg.com/2009/03/13/write-your-own-php-mvc-framework-part-1/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...