2011-10-28 9 views
1

ソーシャルネットワーキングサイトを作成していました。各プロファイルページには、親しみやすいURLを使用する必要があります。cakephpのコントローラアクションからURLを設定するには?

今のようなwww.siteprof.com/profile/23
私はこのURLの最後にaditioanl文字列 'jake-web-developer'を追加する必要があります。結果はwww.siteprof.com/profile/23/jake-web-developerのようになります。プロファイルリンクを作成するときにこれを実行できることはわかっています。しかし、誰かがwww.siteprof.com/profile/23このリンクを使用してこのプロファイルにアクセスした場合、その前のテキストをURLに追加できますか?

また、コントローラのアクションからこれらの特定の文字列をURLに追加する方法はありますか?

答えて

0

CakePHPの規約により、正しく見えませんが、それは次のようになります。あなたが行動view($id=0,$name="") を持っているprofiles_controllerをセットアップした後それが重要である理由私にはわからない

**www.siteprof.com/profiles/view/23** 

、しかし、あなたは、nameパラメータとのリンクを生成することができ、それはまだ動作します:

www.siteprof.com/profiles/view/23/jake-web-developer 

それが最後の文字列を追加することが重要だ場合、あなたは、ビューコントローラにリダイレクトを行う必要があります。 $ nameが指定されているかどうかを確認し、そうでない場合は、名前の付いたURLにリダイレクトします。

+0

確かに、www.siteprof.com/profiles/view/23/jake-web-developerとview($ id)のメソッドシグネチャを使用できます。 ケーキは「jake-web-developer」の部分を無視します。 – RichardAtHome

+0

しかし、あなたが持てないものは:www.siteprof.com/profile/23/jake-web-developerです。私のroute.phpに –

+1

があります。これをprofile/view/23にリダイレクトしています。 – benji

0

方法の一つはなります私のソリューションは、URLは完全なURLにリダイレクトSEOフレンドリーなタイトルが含まれていない場合ページでカスタムリダイレクトヘッダを置くために、次のようになります。

public function view($id = null, $slug = null) { 

    $data = $this->Profile->findById($id); 

    if ($slug == null) { 

    $this->redirect(array('action'=>$view, $id, $data['Profile']['slug'])); 

    } 

    // .. rest of view logic 

} 

これが役に立ちますようお願いいたします。

関連する問題