私は実際にzendを使用していますが、そのようなURLでIDを取得する方法を知りたいです:
/delete/2
私はそれを使用してそれを行うことができることを知っています:
// if URL is /delete/id/2
$request->getParam('id');
/delete/2
しかし、私が望むのは、私にとってより論理的に聞こえる最初の URL のような URL を持つことです。
アイデア?
ご協力いただきありがとうございます
私は実際にzendを使用していますが、そのようなURLでIDを取得する方法を知りたいです:
/delete/2
私はそれを使用してそれを行うことができることを知っています:
// if URL is /delete/id/2
$request->getParam('id');
/delete/2
しかし、私が望むのは、私にとってより論理的に聞こえる最初の URL のような URL を持つことです。
アイデア?
ご協力いただきありがとうございます
この種の問題は、ルートを使用して解決できるはずだと思います。のルートを作成できます。
/delete/2
これをたとえばconfig.ini
ファイルに追加することにより:
[production]
routes.delete.route = "delete/:id"
routes.delete.defaults.controller = delete
routes.delete.defaults.action = index
routes.delete.id.reqs = "\d+"
ここでは、照合する URL を指定します。コロンで始まる単語:
は変数です。ご覧のとおり、正規表現スタイルの変数に要件を設定することもできます。あなたの例でid
は、おそらく1つ以上の数字になり、\d+
この変数に要件が生じます。
このルートは、URL をコントローラーのindex
アクションにポイントし、GET-var として設定します。この .ini コードは、特定のニーズに合わせて変更できます。delete
id
ルートは、次のコードをブートストラップ内に配置することで追加できます。
$config = new Zend_Config_Ini('/path/to/config.ini', 'production');
$router = new Zend_Controller_Router_Rewrite();
$router->addConfig($config, 'routes');
詳細については、ドキュメントを参照してください。一般的なドキュメントについてはhereを、先ほど説明した .ini アプローチについてはhereを参照してください。
これを試してください: 次の関数を Bootstrap.php に追加してください
protected function _initRoute(){
$this->bootstrap ('frontcontroller');
$front = $this->getResource('frontcontroller');
$router = $front->getRouter();
$deleteRoute = new Zend_Controller_Router_Route(
'delete/:id',
array(
'controller' => '{enter-your-controller-name-here}',
'action' => '{enter-your-action-name-here}'
)
);
$router->addRoute('delete', $deleteRoute);
}
{enter-your-controller-name-here} をコントローラー名に、{enter-your-action-name-here} をアクション名に置き換えることを忘れないでください。
このコードを追加すると、$request->getParam('id');
問題なく動作するはずです。