0

現在、Zend Framework を使用してアプリケーションを作成しており、データベース駆動型のルートを使用しています。

デフォルトのルーティングを無効にしましたが、ホームページへのアクセス時にエラーが発生しているようです。

デフォルト ルートを「再作成」する方法を誰か教えてもらえますか?

あなたの答えに基づいて@RockyFordを編集して、以下を追加しました:

if($this->_frontController->getRequest()->getRequestUri() == '/') {
    $route= new Zend_Controller_Router_Route(
        '*',
        array('controller'  => 'index',
              'action'      => 'index')
    );
    $router->addRoute('default', $route);
)

しかし、ご覧のとおり、URL を使用してホームページにアクセスしているかどうかをテストする必要がありました。誰でもこれを行うためのより良い方法を提案できますか?

ルート宣言のスラッシュが削除されるため、この種のルールは使用できません。

$route = new Zend_Controller_Router_Route_Static('/', array(
    'module' => 'default',
    'controller' => 'index',
    'action' => 'index'
));
$router->addRoute('homepage', $route);

Zend_Controller_Router_Route_Static から取得:

public function __construct($route, $defaults = array())
{
    $this->_route = trim($route, self::URI_DELIMITER);
    $this->_defaults = (array) $defaults;
}
4

2 に答える 2

1

マニュアルから:

ルート定義には、「*」記号で表されるもう 1 つの特殊文字 (ワイルドカード) を含めることができます。これは、デフォルトのモジュール ルート (URI で定義された var => 値のペア) と同様にパラメーターを収集するために使用されます。次のルートは、多かれ少なかれ Module ルートの動作を模倣しています。

$route = new Zend_Controller_Router_Route(
    ':module/:controller/:action/*',
    array('module' => 'default')
);
$router->addRoute('default', $route);

Zend_Controller_Router_Route_Moduleコードに興味がある場合は、ルートの実際の定義があります。

[編集]多分:

//not sure if the name will work or not, might need empty string?
$route = new Zend_Controller_Router_Route_Static(
    '/',
    array('controller' => 'index', 'action' => 'index')
);
//also might need a better name like 'home'
$router->addRoute('/', $route);
于 2012-05-10T10:59:59.600 に答える
1

ホームページのルートは次のようになります。

$route = new Zend_Controller_Router_Route_Static('/', array(
    'module' => 'default',
    'controller' => 'index',
    'action' => 'index'
));
$router->addRoute('homepage', $route);

デフォルト/インデックス/インデックス値を、リクエストを送信したいコントローラーとアクションに置き換えます。

于 2012-05-10T11:24:42.043 に答える