2012-04-10 8 views
0

非常に単純なMVCフレームワークはまだ見つかりませんでした。フレームワークは単なるURLだけでコントローラにアクセスすることを可能にしますか?私はそれがQUERY_STRINGと関係があると思いますが、?を持っているとは思いませんか? index.phpのMVCでURL経由でコントローラにアクセスする方法

+0

[Symfony2](http://symfony.com)と[Silex](http://silex.sensiolabs.org/)のマイクロバージョンを確認できます。デカップリングされたPHPフレームワークで、必要なコンポーネントだけを使用できます。 Symfonyの作成者は[一連のブログ記事](http://fabien.potencier.org/article/50/create-your-own-framework-on-top-of-the-symfony2-components-part-1 )symfonyコンポーネントを使ってフレームワークを構築する方法を説明しています。 : –

答えて

1

一般的に、これは介して行われる[ 'REQUEST_URI'] $ _SERVERを解析した作品が含まれてい

C:\wamp\www\public\ 

http://localhost/public/controllername 

localhost/publicは次の場所にあります。 .htaccessの使用は(Apache mod_rewrite)を書き換えます:

  1. サーバ側の言語としてPHPを使用していると仮定して、index.phpのように、静的ファイルではないすべてのクエリをメインエントリポイントに直接書き換えるために、.htaccessを使用します。
  2. 次に、index.phpのURIを解析し、アプリケーションにいくつかのルートを設定します。

クイック例:

.htaccessファイル:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

index.phpファイル:

$uri = $_SERVER['REQUEST_URI']; 
$parts = explode('/', $uri); 
// assuming you want /controller/action/* mapping 
$controller = 'index'; // default 
$action = 'index'; // default 
if (isset($parts[0])) $controller = $parts[0]; 
if (isset($parts[1])) $action = $parts[1]; 
// now, you'd try to establish some logic to test wether this controller/action 
// actually exists, and load it. I'll leave this up to you. 

これは、もちろん、単に迅速かつラフな例ですが、すべきですあなたにこれを行う方法のアイデアを教えてください。

+0

しかし '$ parts [0]'は空です。そして、それらをサブフォルダに置くと、 '$ parts 'の内容が変わります。 – Michelle

+0

@JackSpairowこれはあなたのアプリケーションに単純なコピー/貼り付けができるソリューションを受け取るサイトではありません。上記のコードはポインタとしてのものであり、実際の解決策ではありません。この問題を解決する最良の方法は、自分で試してみることです。 –

+0

私はちょうど理解しようとしていた。 – Michelle

関連する問題