http://mysite.com/ArticleTitleHere
Zend フレームワークを使用するように、自分のサイトの URL をどのように実装するのだろうと思っていました。
module/controller/action
私が見る方法は、正規表現ルートを実装することですが、この方法では、zfは通常のまたはcontroller/action
ルートから記事のURLを言うことができません。そのようなことを実装するにはどうすればよいですか?
ありがとう
http://mysite.com/ArticleTitleHere
Zend フレームワークを使用するように、自分のサイトの URL をどのように実装するのだろうと思っていました。
module/controller/action
私が見る方法は、正規表現ルートを実装することですが、この方法では、zfは通常のまたはcontroller/action
ルートから記事のURLを言うことができません。そのようなことを実装するにはどうすればよいですか?
ありがとう
ルートでプレースホルダーを使用できます。
routes.test.route = "/:article"
routes.test.defaults.module = default
routes.test.defaults.controller = test
routes.test.defaults.action = test
routes.test.defaults.article = ""
article
を使用して、コントローラーのパラメーターを取得できます$this->_getParam("article")
。残りの部分 (記事の名前でデータベース エントリを照合する) はあなたの役割です。
ただし、url-prefix や記事 ID などを追加する必要があります。そうしないと、他のルートが見つからない可能性があります。したがって、次のようなものを使用する方がはるかに優れています。
routes.test.route = "/article/:id/:title"
routes.test.defaults.module = default
routes.test.defaults.controller = test
routes.test.defaults.action = test
routes.test.defaults.article = ""
routes.test.defaults.id = ""
この方法で url-Viewhelper を使用してリンクを作成できます。
<a href="<?php echo $this->url(array("id" => $article->id, "title" => $article->title), "test"); ?>"><?php echo $this->escape($article->title); ?></a>
そして、リダイレクト用のコントローラーで:
$this->_helper->redirector->gotoRoute(array("id" => $article->id, "title" => $article->title), "test");
$article->title
無効な文字 (または非 ASCII 文字) をエスケープまたはフィルタリングすることに注意してください。