我正在开发基于 BITRIX D7 php 框架的项目。我们需要通过将所需的部分作为路由中的参数传递来将多个 URL 合并为一个。在 Laravel 中,它能够创建类似的路线
Route::get('page/{param}', function ($param) { // action body});
我可以使用 Bitrix D7 框架做到这一点吗?
如果您懂俄语,这个manuak-link可以帮助您
您应该在项目根目录中配置 urlrewrite.php。
当然可以! 首先你应该设置你的环境。您可以在官方文档中找到说明(俄语)。 语法与 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()
);
});
您可以在此处找到更多信息。 (俄语)