codelego/phpfox-router

phpfox框架的Router库

dev-master 2016-11-29 10:44 UTC

This package is not auto-updated.

Last update: 2024-09-28 19:52:48 UTC


README

=====================================

添加简单路由

return [
    'router.routes' => [
        'home'    => [
            'route'      => '/',
            'defaults' => [
                'controller' => Controller\IndexController::class,
                'action'     => 'index',
            ],
        ],
        'members'   => [
            'route'      => 'members',
            'defaults' => [
                'controller' => AdminIndexController::class,
                'action'     => 'index',
            ],

        ],
    ],
];

使用(/<...>)进行隐式选项

return [
    'router.routes' => [
        'event_action'    => [
            'route'      => '/blogs/browse(/<sort>)',
            'defaults' => [
                'controller' =>  Controller\IndexController::class,
                'action'     => 'browse',
                'sort'       => 'recents'
            ],
        ],
    ],
];

向模式wheres添加条件

return [
    'router.routes' => [
        'blog_action'    => [
            'route'      => '/blog/<id>/<action>',
            'wheres'=>[
                'id'=>'\d+',
                'action'=>(edit|delete|view|upgrade|settings)
            ],
            'defaults' => [
                'controller' => Controller\IndexController::class,
                'action'     => 'index',
            ],
        ],
    ],
];

创建过滤器

return [
    'router.filters' => [
        '@profile' => [null, ProfileNameFilter::class],
    ],
];

将过滤器应用到路由

'filter' => '@profile',

return[
    'router.routes'         => [
        'profile/members' => [
            'route'    => '<name>/{members}',
            'filter'   => '@profile',
            'defaults' => [
                'controller' => Controller\IndexController::class,
                'action'     => 'index',
            ],
        ],
    ],
];

您可以使用[filter1, filter2,...]添加单个或多个过滤器,所有过滤器都将被遍历,如果路由通过了所有过滤器规则,则结果为true。

翻译

翻译的短语必须在构建RoutingManager之前应用。

  1. 在"$root/config/local.config.php"中编辑短语
  2. 翻译的短语不得包含空白或特殊字符。
  3. 请注意,翻译的短语不应与同一上下文中的其他短语重复。
return [
    'router.phrases' => [
        '{admincp}' => 'admincp',
        '{blog}'=>'bài-viết',
        '{members}=>'thành-viên',
    ],
];

获取URL

service('routing')->getUrl('profile/members', ['name'=>'codelego']);
// origin      "codelego/members"
// translated  "codelego/thành-viên" if {member} is configured to "thành-viên".  

环境参数

示例

posts/en/policy
posts/vi/policy

带有"en"或"vi"将根据当前成员的区域设置添加,但您不需要在每次调用getUrl()时都放置$locale。最简单的方法是使用EnvironmentParams。