geniv/nette-alias-router

Nette 框架的数据库别名路由器扩展

v3.1.7 2019-05-11 16:31 UTC

README

安装

$ composer require geniv/nette-alias-router

"geniv/nette-alias-router": "^3.1"

require

"php": ">=7.0",
"nette/application": ">=2.4",
"nette/caching": ">=2.5",
"nette/di": ">=2.4",
"nette/http": ">=2.4",
"nette/neon": ">=2.4",
"nette/utils": ">=2.4",
"latte/latte": ">=2.4",
"tracy/tracy": ">=2.4",
"dibi/dibi": ">=3.0",
"geniv/nette-locale": ">=2.0"

包含在应用程序中

可用的源驱动程序

  • ArrayDriver (数组)
  • NeonDriver ()
  • DibiDriver (dibi + cache _AliasRouter-DibiDriver)

在路由器别名中,不是好主意更改最后一个别名,而是插入一个新的别名并带有新的时间戳。

neon 配置

route:
    cs:
        "staticky-slug": "Homepage:pokus"
        "staticky-slug1": "Homepage:pokus2"
    en:
        "static-slu": "Homepage:pokus"
        "static-slug1": "Homepage:pokus2"


# alias router
aliasRouter:
#   debugger: true
#   autowired: true
#    driver: AliasRouter\Drivers\ArrayDriver(%route%)
#    driver: AliasRouter\Drivers\NeonDriver(%appDir%/router.neon)
    driver: AliasRouter\Drivers\DibiDriver(%tablePrefix%)
#   enabled: true
#   domainAlias:
#       example.cz: cs
#       example.com: en
#       example.de: de

neon 配置扩展

extensions:
    aliasRouter: AliasRouter\Bridges\Nette\Extension

可用接口: IAliasRouter

RouterFactory.php

public static function createRouter(ILocale $locale, IAliasRouter $aliasRouter): IRouter
...
if ($aliasRouter->isEnabled()) {
    $aliasRouter->setDefaultParameters('Homepage', 'default', 'cs');
    $aliasRouter->setPaginatorVariable('visualPaginator-page');
    //$aliasRouter->setSecure(true);
    //$aliasRouter->setOneWay(true);
    $router[] = $aliasRouter->getRouter();
}

在 @layout.latte 中使用

{if $presenter->context->hasService('aliasRouter.default')}
    {ifset slug}
        {include slug|addSlug}
    {/ifset}
{/if}

手动创建或删除

use AliasRouter\Drivers\IDriver;
$this->context->getByType(IDriver::class)->deleteRouter('Homepage', 'default');
$this->context->getByType(IDriver::class)->createRouter('Homepage', 'default', 'muj alias');
$this->context->getByType(IDriver::class)->createRouter('Homepage', 'default', 'muj alias XX', ['locale' => 'en']);