定制 zaxcms/routers 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

zaxcms/routers

最新稳定版本:v1.0.1

Composer 安装命令:

composer require zaxcms/routers

包简介

Helpers for routers in Nette Framework

README 文档

README

This library contains some useful helpers for routing in Nette framework.

Zax\Application\Routers\MetadataBuilder

This class is a builder for metadata, it add the ability to use aliases and a workaround for UI\Multiplier.

It takes two params in constructor - presenter and action. Alternatively, you can pass array of metadata.

Aliases

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

Calling URL /test-alias/foo will result in value "foo" being assigned to persistent parameter some-deep-control-param.

Signal aliases

Signals need a different treatment, because it's only a single parameter do.

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

Calling URL /test-do/action-add will call signal add in some-deep-control.

Boolean parameters

Boolean parameters will only display some text in URL to represent TRUE.

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

Calling URL /test-boolean/details will set parameter some-deep-control-showDetails to TRUE.

Array parameters

By default, Nette works with array persistent params by making a special param in URL for every value. This behavior can quickly clutter the URL, especially when using components. Fortunately, this library can turn

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

into

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

like this

$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);

Working with Multiplier

Multipliers can be tricky to handle in routers. Fortunately, there's the ability to use aliases inside other aliases!

$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);

Control list-selectedItem is a Multiplier, <item> will get replaced by value inside list-selectedItemId.

Therefore, calling URL /test-multiplier/item-34/view-edit will set list-selectedItem-34-view to edit.

统计信息

  • 总下载量: 102
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 3
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 3
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2015-01-14