modulename/xmlcoverage
アクションや他のいくつかのindex
アクションと同じように呼び出すことができるコントローラーがありますtestAction()
。このコントローラーへのURLはxml/coverage
です。
デフォルトの方法はxml/coverage
、インデックスアクションにマップすることです。そして、それxml/coverage/test
はtestActionにマップされます。testActionのIDが必要な場合、URLはたとえば次のようxml/coverage/test/33
になります。
ただし、インデックスアクションの場合は、希望するxml/coverage/index/33
場所にある必要がありますxml/coverage/33
。
これが私のルートです
'xmlcoverage' => array(
'type' => 'segment',
'options' => array(
'route' => '/xml/coverage[/:action][/:id]',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]+',
),
'defaults' => array(
'controller' => 'modulename/xmlcoverage',
'action' => 'index',
),
),
),
url xml / coverage / 33を試すとき、33はidにマップする必要があると思います。これは、アクションの正規表現と一致せず、両方ともオプションであるためです。また、アクションと一致しないため、デフォルト(インデックス)を使用する必要があります。
代わりに、URLをルーティングで一致させることができないというエラーが表示されます。したがって、私にとっては、'/xml/coverage[/:action[/:id]]'
何らかの理由でIDを認識するためのアクションを指定する必要があるため、ルートがルートであるかのように動作します。
何が間違っているのでしょうか。URLを希望どおりに機能させるにはどうすればよいですか。ありがとう。
編集:ここに問題があります。 私の見解ではこれを行う:
$this->url('xmlcoverage', array('action' => 'index', 'id' => $someid))
実際にxml/coverage/1
クラッシュするURLをフォームに表示します!ルートをに変更する/xml/coverage[/:action[/:id]]
と、少なくともURLヘルパーが機能するURLを生成します。