上記のernieが述べたように、YiiURLManagementを使用してURLを完全に書き直すことをお勧めします
まず、URLにパス形式を使用します。これは、最初にprotected / config / main.phpurlManager
の行のコメントを解除することによって行われます(デフォルトでは34行目あたり)。これにより、たとえば、次のようなURLの代わりに、「きれいなURL」を使用できるようになります。
www.example.com/index.php?r=user/profile?uid=110
あなたはそれを次のようにすることができます:
www.example.com/user/110
したがって、たとえば、構造を持つURLをprofile/<a users id>
ユーザーコントローラーのビューアクション(actionView)にルーティングする場合は、次のようにすることができます。
'urlManager'=>array(
'urlFormat' => 'path',
'showScriptName' => false,
'rules' => array(
'user/profile/<id:.+>' => 'user/view',
...
したがって、配列の左側には「URLがどのように表示されるか」が表示され、右側には「それが指している場所」が表示されます。id
次に、を使用して、ビューまたはコントローラーの値にアクセスできます。次に$_GET
例を示します。
echo "You are viewing user id ".$_GET['id'];
この値を使用して、写真やプロフィールコンテンツ、またはそのユーザーに関連付けられているものをクエリできます。URLにユーザー名を含めるという点では(Facebookの方法、例:) facebook.com/myusername
、ユーザーがバニティURLを行のどこかに入力し、それをデータベースに保存できるようにする可能性があります。次に、ルールを次のように変更できます。
'user/profile/<user_vanity_url:.+>' => 'user/view',
次に、を使用して上記と同じようにその値にアクセスします$_GET
。このルートを使用する場合のアドバイスの1つは、ユーザーが表示を許可されていないコンテンツを表示できないようにする必要があることです。たとえば、友達ではない人の写真を表示する場合などです。これらの関係を格納するある種のテーブルがあると思いますか?
URLを介して渡すIDまたは値を追加する必要がある場合は、ビューまたはHTMLが作成されている場所に追加するだけで済みます。たとえば、ユーザーの写真へのリンクを表示する場合は、プロフィールページあなたは次のようなことをすることができます:
<a href="<?php echo Yii::app()->request->baseUrl; ?>/photos/<?php echo $_GET['id']; ?>"></a>
urlManagerのURLルールに関するもう1つの点は、ルールが上から下に解釈され、最初に一致したルールが使用されることです。
うまくいけば、これは正しい道にあなたを助けるでしょう。それでも行き詰まっている場合は、次の投稿を確認してください。