0

オンラインのチュートリアルに従って、独自の PHP MVC フレームワークを構築しました。次のようにエントリスクリプトを使用して、これをすべて機能させ.htaccessます。

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?rt=$1 [L,QSA]

基本的に URL を変換し、それをアクション/コントローラー セグメントに分割する Router クラスがあります。

$route = (empty($_GET['rt'])) ? '' : $_GET['rt'];

if (empty($route))
{
    $route = 'index';
}
else
{
    /*** get the parts of the route ***/
    $parts = explode('/', $route);
    $this->controller = $parts[0];

    if(isset( $parts[1]))
    {
        $this->action = $parts[1];
    }
}

私がやりたいことは、これをさらに一歩進めて、自動ルーティングに加えて機能する URL 書き換えルールを実際に定義することです。したがって、基本的には次のようなことができるようにしたいと考えています。

$rules = array(
    'directory/listing/<id>' => 'listing/index',
    'directory/<category>/<location>' => 'directory/view',
);

上記では、配列キーは入力された URL です。山括弧内の部分は動的変数 (GET 変数など) です。配列の値は、要求をルーティングする必要がある場所 (コントローラー/アクション) です。したがって、上記の 2 つのルールには、次の 2 つのアクションがあります。

public function actionIndex($id) {
}

public function actionView($category, $location) {
}

したがって、基本的に URL は最初に配列キーに対してチェックする必要があり、キーの 1 つと一致する場合は、配列値をコントローラー/アクションのペアとして使用する必要があります。

誰でもこれについてどうすればよいか考えていますか?

4

1 に答える 1

0

お使いの環境でこれを実装するために必要な正確なコードはわかりませんが、これがまさに Magento の URL 書き換え機能の仕組みであると言えます。それらの URL は のように構成されてい<controller>/<action>/<arguments>ます。さらに一歩進んで、キーと値のペアを URL パラメーターとして定義../id/20/meta/25し、次のように配列に変換します。

array(
    'id' => 20,
    'meta' => 25
)

ソースをダウンロードしてチェックアウトできます。正しい方向に向かうのに役立つかもしれません:

于 2013-08-23T22:06:08.753 に答える