0

ZendFrameworkにサイトがあります。URLで特定のコントローラー名を非表示にします。以下の要件を説明します。

現在のURLhttp ://abcd.com/user/john (ユーザーのプロファイルページ)

優先URLhttp ://abcd.com/john

優先URLがブラウザに表示されます。また、訪問者がURLにユーザー名(例:http://abcd.com/smith)を入力すると、ブラウザーにユーザープロファイルが表示されます。

私のサイトには他のコントローラーもあり(たとえばhttp://abcd.com/registration)、それらのコントローラー名を変更したり非表示にしたりしたくありません。

これは、どちらがユーザー名で、どちらがURLのコントローラーであるかを認識するのが難しい場合があることを知っていますが、私は本当にこれを達成したいと思っています。必要なものを教えてください。

以下のhtmlコードを使用してユーザープロファイルのリンクを表示していることに注意してください。

<a href="<?php echo $site?>user/john">John</a>

また、bootstrap.phpファイルに下記のルーターを追加しました。

$ routeUser = new Zend_Controller_Router_Route('user /:username /'、array('controller' =>'User'、'action' =>'index'));

$ router-> addRoute('user'、$ routeUser);

4

1 に答える 1

1

ルートは逆の順序でチェックされるため、ユーザー ルートを just に変更できます:usernameが、ルーターはそれがexample.com/registrationユーザー プロファイルではないことを認識する方法がないため、他のルートが壊れてしまいます。これを修正する最も簡単な方法は、登録リクエストを処理するユーザー ルートの後に別のルートを追加することです。

$router->addRoute('registration',
    new Zend_Controller_Router_Route('registration/:action', array(
        'module' => 'default',
        'controller' => 'registration',
        'action' => 'index'
    ))
);

または、ZF に慣れていて、標準ルートを壊さずにユーザー リクエストを適切に処理したい場合は、ユーザー プロファイル リクエスト専用のカスタム ルート クラスを作成できます。これを行う方法について、少し前にブログ記事を書きました。

于 2012-06-22T15:07:01.473 に答える