0

Zend_Controller_Router について質問があります。アプリケーションでモジュラー構造を使用しています。このアプリケーションは、Zend-Framework に基づいて構築されています。通常のルートは次のようになります。

/modulename/actionname/

モジュール内で常に IndexController を使用するため、URL で指定する必要はありません。これで、次のようにパラメーターを追加できるようになりました。

/modulename/actionname/paramkey/paramvalue/paramkey/paramvalue

だから、これはZFでは普通だと思います。しかし、場合によっては、URL 内に paramkey を提供したくないことがあります。たとえば、ブログのタイトルを URL 内に表示したいとします。もちろん、これは SEO を目的としています。

/blog/show/id/6/this-is-the-blog-title

この場合、blogはモジュール、showはアクションです。idは paramkey で6、表示したいブログ投稿の ID です。this-is-the-blog-titleもちろん、 id のブログ投稿の見出しです6。問題は、assemble()ルーターの -method を次のように使用すると、次のようになることです。

assemble(array('module' =>'blog',
               'action' => 'show', 
               'id' => $row['blog_id'],
               $row['blog_headline_de'] . '.html'));

URL は次のようになります。

blog/show/id/6/0/this-is-the-blog-title.html

ご覧のとおり、0a がキーとして挿入されています。しかし、この0は省略してほしい。次のように、ブログタイトルをキーとして使用してこれを試しました。

assemble(array('module' =>'blog',
               'action' => 'show', 
               'id' => $row['blog_id'],
               $row['blog_headline_de'] . '.html' => ''));

これにより、次の結果が得られます。

blog/show/id/6/this-is-the-blog-title.html/

0は省略されていますが、最後にスラッシュがあります。

0キーなしで末尾のスラッシュなしでURL を取得する解決策はありますか?

よろしく、アレックス

4

1 に答える 1

2

これにはカスタム ルートを使用することをお勧めします。

$router->addRoute(
    'blogentry',
    new Zend_Controller_Router_Route('blog/show/:id/:title',
                                     array('controller' => 'index', 'module' => 'blog'
                                           'action' => 'info'))
);

そして、ルートを2番目のパラメーターとして使用して、アセンブルを呼び出します。詳細については、ドキュメントのZend_Controller_Router_Routeセクションを参照してください ( assembleを使用した例も提供されています)。

または、より一般的な方法で:

$router->addRoute(
    'generalseo',
    new Zend_Controller_Router_Route(':module/:action/:id/:title',
                                     array('controller' => 'index'))
);
于 2010-10-30T10:11:39.000 に答える