zaxcms / routers
该软件包最新版本(v1.0.1)没有可用的许可证信息。
Nette 框架中路由的辅助工具
v1.0.1
2015-05-19 18:37 UTC
Requires
- php: >=5.4.0
- nette/application: >=2.2.0
Requires (Dev)
- nette/nette: ~2.2
- nette/tester: ~1.3
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-showDetails
为 TRUE
。
数组参数
默认情况下,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-view
为 edit
。