次のようなリンクを作成します。
somesite.com/management/users/index/delete/10
management はモジュール名、users はコントローラー、index はアクション名、delete はレコードの ID を取得するパラメーターです。このリンクを作成するには、コードのこの部分を使用しています:
$delUrl = $this->url()->fromRoute('management-users', array(
'controller' => 'users',
'action' => 'index',
'delete' => $siteData['id'],
));
私の設定は以下のようなものです:
'router' => array(
'routes' => array(
'management-index' => array(
'type' => 'segment',
'options' => array(
'route' => '/management[/:controller][/:action][/delete/:delete][/:id]',
'constraints' => array(
'delete' => '[0-9]+' ,
'id' => '[0-9]+'
),
'defaults' => array(
'__NAMESPACE__' => 'Management\Controller',
'controller' => 'Index',
'action' => 'index'
),
),
),
),
),
結果は次のとおりです。
somesite.com/management/users/delete/10
関数はデフォルトのアクションであるためアクション名を省略し、アクション名として削除を取得し、最終的に404エラーが発生します。ご覧のとおり、リンクから「削除」というフレーズを省略できないパラメーター「id」があります。URL から「delete」を省略することにより、ZF2 は「delete」ではなく「id」として入力を取得します。デフォルトのアクションも変更できません。URLにアクション名を入力するようにZF2に指示する方法はありますか?