我正在尝试创建一个动态可重用菜单以在我的应用程序上使用。我有一个非常基本的路线,其中有 :id 代表记录 ID。在子菜单中,我希望将这个 :id 动态替换为用户当前正在与之交互的记录。请参阅下面的完整详细信息。
这是我的路线
'item' => array(
'type' => 'Literal',
'options' => array(
'route' => '/Item/',
'defaults' => array(
'__NAMESPACE__' => 'ReserveAnything\Item\Controller',
'controller' => 'Index',
'action' => 'index',
),
),
'may_terminate' => true,
'child_routes' => array(
'default' => array(
'type' => 'Segment',
'options' => array(
'route' => '[:action][/][:id]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]+',
),
'defaults' => array(
),
),
),
这是我的导航文件
return array(
'navigation' => array(
'default' => array(
'overview' => array(
'label' => 'Edit Item',
'route' => 'item/default',
'action' => 'Edit',
'params' => array(
'id' => 0,
)
),
'extras' => array(
'label' => 'Manage Extras',
'route' => 'item/default',
'action' => 'Extras',
'params' => array(
'id' => 0,
),
),
),
);
最后这是我的观点
echo $this->navigation('navigation')->menu();
现在这个输出是
<ul class="navigation">
<li>
<a href="/Item/Edit/0">Edit Item</a>
</li>
<li>
<a href="/Item/Extras/0">Manage Extras</a>
</li>
现在,如果我在 Id 0 上,这将是完美的,但是如果我在 Id 1 (/Item/Edit/1) 上,它显然仍会出现在上面的示例中。如何获取菜单以更新配置中的 Id。我想这是可以做到的。我编辑记录 ID 1 时的理想输出是
<ul class="navigation">
<li>
<a href="/Item/Edit/1">Edit Item</a>
</li>
<li>
<a href="/Item/Extras/1">Manage Extras</a>
</li>