1

http://mysite.com/ArticleTitleHereZend フレームワークを使用するように、自分のサイトの URL をどのように実装するのだろうと思っていました。

module/controller/action私が見る方法は、正規表現ルートを実装することですが、この方法では、zfは通常のまたはcontroller/actionルートから記事のURLを言うことができません。そのようなことを実装するにはどうすればよいですか?

ありがとう

4

1 に答える 1

3

ルートでプレースホルダーを使用できます。

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 文字) をエスケープまたはフィルタリングすることに注意してください。

于 2012-04-29T16:48:30.117 に答える