bitrix d7 路由参数

问题描述 投票:0回答:2

我正在开发基于 BITRIX D7 php 框架的项目。我们需要通过将所需的部分作为路由中的参数传递来将多个 URL 合并为一个。在 Laravel 中,它能够创建类似的路线

Route::get('page/{param}', function ($param) { // action body});

我可以使用 Bitrix D7 框架做到这一点吗?

php routes bitrix
2个回答
0
投票

如果您懂俄语,这个manuak-link可以帮助您

您应该在项目根目录中配置 urlrewrite.php。


0
投票

当然可以! 首先你应该设置你的环境。您可以在官方文档中找到说明(俄语)。 语法与 Laravel 中的类似:

$routes->get(
    uri: '/guides/{guideSlug}',
    controller: fn($guideSlug): string => Guides::getBySlug(slug: $guideSlug)->render()
)
    ->where(parameter: 'guide', pattern: '[A-Za-z0-9_-]+')
    ->default(parameter: 'guide', value: 'routes-in-bitrix')
    ->name(name: 'guide-detail');

$routes->post(uri: '/guides', controller: [GuideController::class, 'create']);

...等等。

如果指定了路由名称,则可以通过名称获取生成的 URL:

$router = \Bitrix\Main\Application::getInstance()->getRouter();
$url = $router->route(
    name:'guide-detail', 
    parameters: ['guideSlug' => 'routes-in-bitrix']
);

更多信息您可以在这里这里找到。 (俄语

您可能还有兴趣对路线进行分组:

$routes
    ->prefix(prefix: 'guides')
    ->where(parameter: 'guideSlug', pattern: '[a-z0-9]+')
    ->name(name: 'guides-')
    ->group(function (RoutingConfigurator $routes) {
        $routes->name(name: 'author')
            ->get(
                uri: '/{guideSlug}/author',
                controller: fn($guideSlug): string => Guides::getBySlug(slug: $guideSlug)->getAuthor()
            );
        $routes->name(name: 'page-views')
            ->get(
                uri: '/{guidesSlug}/page-views',
                controller: fn($guideSlug): int => Guides::getBySlug(slug: $guideSlug)->getPageViews()
            );
    });

您可以在此处找到更多信息。 (俄语

© www.soinside.com 2019 - 2024. All rights reserved.