zaxcms/routers

该软件包最新版本(v1.0.1)没有可用的许可证信息。

Nette 框架中路由的辅助工具

v1.0.1 2015-05-19 18:37 UTC

This package is auto-updated.

Last update: 2024-09-13 20:29:58 UTC


README

此库包含一些 Nette 框架中路由的有用辅助工具。

Zax\Application\Routers\MetadataBuilder

此类是元数据的构建器,它增加了使用别名和处理 UI\Multiplier 的替代方案的能力。

构造函数中接受两个参数 - 展示器和动作。或者,您也可以传递元数据数组。

别名

$default = ['presenter' => 'Default', 'action' => 'default'];
$meta = (new MetadataBuilder($default))
	->addAlias('bar', 'some-deep-control-param')
	->build();
$router[] = new Route('/test-alias[/<bar>]', $meta);

调用 URL /test-alias/foo 将将 "foo" 的值分配给持久参数 some-deep-control-param

信号别名

由于信号只有一个参数 do,因此需要对信号进行不同的处理。

$meta = (new MetadataBuilder($default))
	->addSignalAlias('add', 'some-deep-control-add')
	->build();
$router[] = new Route('/test-do[/action-<do>]', $meta);

调用 URL /test-do/action-add 将调用 some-deep-control 中的信号 add

布尔参数

布尔参数仅在 URL 中显示一些文本来表示 TRUE

$meta = (new MetadataBuilder($default))
	->addAlias('details', 'some-deep-control-showDetails')
	->addBooleanParam('details')
	->build();
$router[] = new Route('/test-boolean[/<details>]', $meta);

调用 URL /test-boolean/details 将设置参数 some-deep-control-showDetailsTRUE

数组参数

默认情况下,Nette 通过在 URL 中为每个值创建一个特殊的参数来与数组持久参数一起工作。当使用组件时,这种行为会迅速使 URL 复杂化。幸运的是,此库可以将

/test-array?some-deep-control-selected[]=1&some-deep-control-selected[]=5&some-deep-control-selected[]=10

转换为

/test-array?selected=1+5+10

如下

$meta = (new MetadataBuilder($default))
	->addAlias('selected', 'some-deep-control-selected')
	->addArrayParam('selected', '+') // second parameter (delimiter) is optional, ',' is default
	->build();
$router[] = new Route('/test-array', $meta);

与 Multiplier 一起工作

在路由器中处理 Multiplier 可能很棘手。幸运的是,可以在其他别名内部使用别名!

$meta = (new MetadataBuilder($default))
	->addAlias('item', 'list-selectedItemId')
	->addAlias('view', 'list-selectedItem-<item>-view')
	->build();
$router[] = new Route('/test-multiplier[/item-<item>[/view-<view>]]', $meta);

控制 list-selectedItem 是一个 Multiplier,<item> 将被 list-selectedItemId 中的值替换。

因此,调用 URL /test-multiplier/item-34/view-edit 将设置 list-selectedItem-34-viewedit