0

ZendFramework 2.x を使用しており、既存のルートにルートを追加しようとしています。さらに、URLにもいくつかのパラメーターを入れたいと思います。新しいルート (「ショールーム」) にセグメント タイプを使用すると、新しい URL を呼び出すことができ、対応するビューに転送されます。残念ながら、URL にいくつかのパラメーターを設定できません。もう 1 つのオプションは、module.config.php ファイルでセグメント タイプを使用することですが、ルートが正しく構成されていないという ZF-2-Exception が発生します。これは、イントロ ビューをレンダリングする前でも発生します。route-child-route-combination でセグメントとリテラル タイプの使用法を組み合わせる方法、またはリテラル タイプの URL にパラメータを追加する方法を教えてくれてありがとう。

モジュールの module.config.php のルート設定:

'router' => array(
    'routes' => array(
        'zfcuser' => array(
            'type' => 'Literal',
            'priority' => 1000,
            'options' => array(
                'route' => '/user',
                 'defaults' => array(
                     'controller' => 'zfcuser',
                     'action'     => 'index',
                 ),
            ),
            'may_terminate' => true,
            'child_routes' => array(
                'showroom' => array(
                    'type' => 'Segment',
                    'options' => array(
                        'route'    => '/:id',
                        'defaults' => array(
                            'controller' => 'zfcuser',
                            'action'     => 'showRoom',
                            'id'         => '1',
                        ),
                    ),
                ),
                'login' => array(
                    'type' => 'Literal',

更新: エラーをトリガーするスニペット (コメントを参照)

<?php 
    $roomIndex = 1;
    foreach($roomsPaginator->getCurrentItems() as $room){
        $roomURL = 'zfcuser/showroom' . '/' . $roomIndex;
        echo "<p>Name: " . $room['name'] . "; Luftfeuchtigkeit: " . $room['humidity'] . ";  <a class='btn' href='" . $this->url($roomURL) . "'>Betreten &raquo;</a></p>";
        $roomIndex++;
    }
?>
4

1 に答える 1

0

これがエラーの原因かどうかはわかりませんが、URL ヘルパーを正しく使用していないと思います。URL を作成してヘルパーに渡すのではなく、ヘルパーがルート名とパラメーターを使用して URL を作成するという考え方です。おそらく次のようなものが必要です。

$roomIndex = 1;
foreach($roomsPaginator->getCurrentItems() as $room){
    echo "<p>Name: " . $room['name'] . "; Luftfeuchtigkeit: " . $room['humidity'] . ";  <a class='btn' href='" . $this->url('showroom', array('id' => $roomIndex)) . "'>Betreten &raquo;</a></p>";
    $roomIndex++;
}
于 2013-07-29T21:19:28.837 に答える