0
現在、私は小さなウェブサイトにいます。 ユーザーはログインした後、プロフィールページにリダイレクトされます。 今まで、私は次のコードでURLをルーティングした:URLを持つプロフィールURL
public function route($uri)
{
$path = $uri;
switch ($path) {
case '/':
return new FrontPageController;
case '/login':
return new LoginFormPageController;
case '/action/login':
return new LoginController;
case '/register':
return new RegisterFormPageController;
case '/action/register':
return new RegisterController;
case '/Profile/' . :
return new ProfilePageController;
case '/logout':
return new LogoutController();
default:
echo 'error';
}
}
しかし、私は、プロフィールページで、それをどのように行うのですか? プロファイルuriは次のようにする必要があります。http://example.com/Profile/USERNAMEどこからでもアクセス可能です。 私は
case '/Profile/' . $_SESSION['username']:
return new ProfilePageController;
でそれを行うにはしかし、その後のみログインしたユーザーが自分のページを見ることができます試してみました。 プロファイル/がユーザ名を入力した後、私のルータを認識する方法は? 、プロフィールページへのログイン後にどうすればいいですか? Profile /にルーティングして、手動でユーザー名を追加できますか?ところで
:バックあなたの中に今
// check if route matches a pattern. preg_match return true if any matches found
case preg_match('/\/Profile\/([a-z0-9]+)/', $path, $matches):
// we remove the first element
$params = array_shift($matches);
// pass params to construct
return new ProfilePageController($params);
:私はあなたがこのような何かにあなたのケース「/プロフィール/」ブロックを変更することができます.htaccessの
現在、$ route変数は静的パスのみを読み取ることができます。パス正規表現を抽出する方法が必要です。たぶんregexはそうするでしょう。これらのパラメータ配列を新しいProfilePageControllerコンストラクタに渡します。あなたはあなたのパスパラメータをコントローラに持っています – astroanu
前に正規表現で作業したことはありません...別の解決法がありますか:/ haha .. – lukas