Zend フレームワークを使用して Web アプリケーションを実行しています。私が使用しているライブラリは1.12です
プロジェクトには、Default と Admin の 2 つのモジュールがあります。
デフォルトのモジュールには、ルーターを設定した静的ページがいくつかあります。ルーターでコントローラーとアクションを設定しました。以下のコードを参照してください。
ブートストラップファイルでは、
protected function _initModules() {
$defaultstaticRoute = new Zend_Controller_Router_Route(
'/:staticpage',
array('module' => 'default',
'controller' => 'index',
'action' => 'displaystatic',
'staticpage' => '([a-z0-9]+-)*[a-z0-9]+'
),
array(
'staticpage' => '([a-z0-9]+-)*[a-z0-9]+'
)
);
$router->addRoute('defaultstatic', $defaultstaticRoute);
}
コントローラーでは、
class IndexController extends Zend_Controller_Action
{
public function init()
{
}
public function indexAction()
{
}
public function displaystaticAction()
{
//get the file name from the url
$page = $this->getRequest()->getParam('staticpage');
//render the view
$this->render($page);
}
}
URLが次のような場合、上記のコードは正常に機能してい
http://myproject/index
ますhttp://myproject/aboutus
しかし、ページ名のないURLの場合、
http://myproject/
次に、インデックスページを表示する必要がある間、404 not found ページにリダイレクトされます。
この問題を追跡したところ、Index Controller の init() メソッドで発生し、404 になった後に発生することがわかりました。
私のコードで間違っているのは何ですか?
編集:
上記の問題は、Tim Fountain によって提供されたソリューションによって解決されますが、別の問題が見つかり、上記のトリックでは解決されません。以下はコードです、
ブートストラップ ファイル:
$servicesstaticRoute = new Zend_Controller_Router_Route(
'services/:pagename',
array('module' => 'default',
'controller' => 'services',
'action' => 'displayservices',
'pagename' => 'index'
),
array(
'pagename' => '([a-z0-9]+-)*[a-z0-9]+'
)
);
$router->addRoute('servicesstatic', $servicesstaticRoute);
上記のコードではhttp://myproject/services/indexは機能しますが、http://myproject/services/は機能しません。