2011-10-29 13 views
2

概念的な質問です。 CSS、Javascriptなどの資産をHTMLページに埋め込む最良の方法は何ですか? 私自身のMVCフレームワークを実装しています。アプリケーションdirectroyのstructerはCss、JS包含方法

..ビューファイルが含まれ、その後..あなたが見ることができるように、すべてのリクエストはindex.phpを通ってくると、私はそれを処理するための制御権を見つけコントローラプロセスいくつかのビジネスロジック

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

です

ビューファイルでは、このようなすべての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"); 

私はそれはとてもどのように私はそれを改善することができます最善の方法ではないと思いますか?

答えて

1

私の意見では、正しい方法はZendのようにすることです。それはあなたのコードと互換性があるかもしれません。

$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/

+0

私はZendフレームワークのポイントを参照してください..また、Codeigniterに似ています..私は、CSSやjsファイルのソースへの相対パスを与える方法がないことを理解しています..あなたが共有するリンクは、 。 Btw私はAPPROOT + "styles/x.css"でCSSとjsのabsuluteパスを計算しています。 zendやcodeigniterのようなベースURLでそれを変更する必要がありますか?もしそうならベースルルをどのように計算できますか? –

+0

はい、あなたのポイントは有効です。私はこれを含めることを考えていたが、思慮深いかもしれない。アプリケーションパスとベースURLはまったく異なるものです。そして、あなたは相対パスではなく絶対パスを使用する必要があります。これは時間と労力を節約し、将来の関連する問題を取り除きます。 –

+0

頭の中のベースタグを使うこともできます。そして、私はいつかその記事を読んで、価値ある読書を読んでいます。ベースURLを計算する方法については、あなたの答えが見つかります。 –

2

通常、アプリケーションをパブリックディレクトリの外部に置いて、それにつながるインクルードパスを作成します。こうすることで、要求されたパスにあるファイルが存在しない場合にのみ、index.phpにリダイレクトするためのURL書き換えを記述することができます。 htaccessでは、これは次のようになります。

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

ファイルはありませんは公開ディレクトリに存在し、要求されている場合は、この方法では、Apacheは単にいつものようにそのファイルを提供しますが、要求されたファイルがないが存在しない場合は、インデックスにリダイレクトします。 MVC処理のためのPHP。

次のマニュアルを参照、アプリケーションディレクトリにつながるインクルードパスを作成するには:あなたが設定することもでき

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

はINIS経由のパスが含まれています。

関連する問題