0

これが URL の書き換えによるものかどうかはよくわかりませんが、それに応じてタイトルを付ける方法がわかりませんでした。

これが私の問題です。私は現在、MVC フレームワークの抽象化を使用している Web サイト プロジェクトに取り組んでいます (主にフレームワークを学習するためのものです)。これは私のフォルダ構造がどのように見えるかです:

/controller/
 |--indexcontroller.php

/myaccount/
 |--/controller/
    |--indexcontroller.php
 |--index.php

/globals/
 |--framework.php

/templates/

/options/
 |--settings.php
 |--config-www.php.inc

現在、必要なクラスをロードするためにオートローダーを使用しています。myaccount フォルダーの index.php は、クラスの読み込みを処理する Framework クラスを継承します。

$urlparts = explode("/", $_SERVER['REQUEST_URI']);
    $urlparts2 = explode("?", $urlparts[2]);
    $class = str_replace(".php", "", $urlparts2[0]);
    
    if ($class == "") {
        
        $class = "index";
    }

    $letters_first = substr($class, 0, 1);
    $letters_last = substr($class, 1, strlen($class));
    
    $class = strtoupper($letters_first).$letters_last."Controller";

    if (class_exists($class)) {

        $object = new $class();
        
    } else {
       
        echo "Problem: class $class does not exist.";
    }

現時点での問題は、myaccount からコントローラー フォルダーに indexcontroller.php をロードしている "http://www.url.com/myaccount/" しか使用できないことです (これで問題ありません)。しかし、「http://www.url.com/myaccount/profile」も使用できるようにしたいのですが、代わりに myaccount のコントローラーフォルダーにある「profilecontroller.php」を呼び出す必要があります。

これどうやってするの?URL書き換え?それとも私はそれを完全に間違っていますか?

4

1 に答える 1

1

これは最初は少し圧倒されるかもしれませんが、それを手に入れれば、あなたの生活はずっと楽になります。

1)symfony、codeigniterなどの既存のフレームワークを見て、ルーティングがどのように行われるかを確認します。

2)これらの「コンポーネント」(ルーティングフォームsymfonyなど)をcomposerで再利用して、自分で行う必要がないようにします。

こちらです:

  • すべて自分で書く必要はありません。
  • あなたは作曲家のようなホットなものを使用しています:)
  • あなたはまだ他のフレームワークの実装を見ることによって学びます

これが少し役立つことを願っています:)。

于 2013-01-22T22:22:39.213 に答える