qbnk / frontend-components
Slim-based frontends 的共享前端组件。
Requires
- php: ^8.1.0
- ext-intl: *
- ext-mbstring: *
- bryanjhv/slim-session: ^4.0
- cbschuld/browser.php: 1.9.4
- dflydev/dot-access-data: ^1.1
- jaybizzle/crawler-detect: ^1.2
- mailchimp/transactional: 1.0.*
- qbnk/php-saml: ^4.1
- qbnk/qbank3api-php-plugin-wrapper: ^3.0.0
- qbnk/qbank3api-phpwrapper: ^7.0.0
- slim/psr7: ^1.6
- slim/slim: ^4.11.0
Suggests
- qbnk/frontend-components-saml2: Needed if you want to use the Auth\Saml2Controller for authentication.
- dev-master
- 6.3.1
- 6.3.0
- 6.2.0
- 6.1.4
- 6.1.3
- 6.1.2
- 6.1.1
- 6.1.0
- 6.0.1
- 6.0.0
- 5.0.2
- 5.0.1
- 5.0.0
- 4.1.7
- 4.1.6
- v4.1.5
- 4.1.4
- 4.1.3
- 4.1.2
- 4.1.1
- 4.1.0
- 4.0.3
- 4.0.2
- 4.0.1
- 4.0.0
- 3.6.2
- 3.6.1
- 3.6
- v3.5.0
- 3.4.3
- 3.4.2
- 3.4.1
- 3.4
- v3.3.2
- v3.3.1
- v3.3
- v3.2.2
- v3.2.1
- v3.2
- v3.1
- v3.0.1
- v3.0
- v2.x-dev
- v2.10.3
- v2.10.2
- v2.10.1
- v2.10.0
- v2.9.1
- v2.9
- v2.8
- v2.7
- v2.6.5
- v2.6.4
- v2.6.3
- v2.6.2
- v2.6.1
- v2.6
- v2.5
- v2.4.1
- v2.4
- v2.3
- v2.2.16
- v2.2.15
- v2.2.13
- v2.2.12
- v2.2.11
- v2.2.10
- v2.2.9
- v2.2.8
- v2.2.7
- v2.2.6
- v2.2.5
- v2.2.4
- v2.2.3
- v2.2.2
- v2.2.1
- v2.2
- v2.1.1
- v2.1
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.1
- v1.0.0
- dev-SSO_improvement_defaultgroups
- dev-setIndexOfCategoryAll
- dev-backport/setIndexOfCategoryAll
- dev-feat/addUserGroupsToCookie
- dev-ssoSlimV4
- dev-mailController
- dev-allowUnauthenticated2
- dev-allowUnauthenticated1
- dev-slimv4response
- dev-backport/2-api-wrapper-update
This package is auto-updated.
Last update: 2024-09-03 11:03:37 UTC
README
Account-manager 的设置示例
$settings = [
'account-manager' => [
'qbank-manager-group-ids' => [20],
'terms' => 'Lorem ipsum dolor...',
'account-expire' => '+1 year', // set false to disable this setting
'apply-page-group-ids' => [1,2,3],
'approve-page-group-ids' => [1,2,3,4],
'custom-options' => [
'Company' => [
'array' => false,
'mandatory' => true
],
'Country' => [
'array' => true,
'mandatory' => true,
'multiple' => true,
'options' => [
'Sweden',
'Norway',
'Denmark'
]
]
]
]
]
如何实现...
以下章节应解释如何在前端项目中实现和使用某些组件。
下载多个文件
从 v3.0 开始,下载多个媒体的功能已更新,现在 DownloadController::downloadMultiple()
需要不同的参数。它不再接受参数中的模板,相反,下载模板通过 DownloadController::setDownloadTemplate()
设置。该方法接受一个分类(例如,MimeType::CLASSIFICATION_IMAGE
)和一个模板 ID。在获取物理文件时,DownloadController
使用 DownloadController::getDownloadTemplate()
对媒体进行分类。如果您将模板设置为 0
或 null
,将获取原始文件。
DownloadController::downloadMultiple()
下载的媒体可以是 MediaResponse 数组或媒体 ID 数组(必须是数字)。
示例代码
$media = [
1337,
999,
123,
];
// or an array of MediaResponse, eg. from a QBank search
$downloadController = new DownloadController($this->qbankApi);
$imageTemplates = (int) $request->getQueryParam('imageTemplates');
$videoTemplate = (int) $request->getQueryParam('videoTemplate');
// If a specific classification has more than one template, call addDownloadTemplate multiple times
foreach($imageTemplates as $imageTemplate) {
$downloadController->addDownloadTemplate(MimeType::CLASSIFICATION_IMAGE, $imageTemplate);
}
$downloadController->addDownloadTemplate(MimeType::CLASSIFICATION_VIDEO, $videoTemplate);
$downloadController->downloadMultiple($media, $deploymentSiteId, $sessionId, $zipFileName, $deploymentPath, $debug);
DownloadController::downloadMultiple
抛出多个异常,因此将其包装在捕获 Throwable
的 try-catch 中是一个好主意,记录错误并生成用户友好的错误消息。
DownloadController::setDownloadTemplate
目前接受四种(4)分类,对应于:MimeType::CLASSIFICATION_IMAGE
、MimeType::CLASSIFICATION_VIDEO
、MimeType::CLASSIFICATION_AUDIO
和 MimeType::CLASSIFICATION_DOCUMENT
,这是 QBank 中的四种可配置模板类型。对于其他分类,始终下载原始文件。
DownloadController::downloadMultiple
不支持从同一媒体获取多个物理文件,如果需要,这种功能必须在特定项目中实现。
Middleware\IPAutoLogin
要正确实现 `IPAutoLogin
`,设置数组必须包含一个允许的 IP 地址数组,以及一个反映真实用户及其适当访问权限的用户的用户名。
$settings[QB_SETTINGS][QB_FRONTEND][QB_IP_AUTO_LOGIN] = [
'username' => 'apiuser',
'firstname' => 'Api',
'lastname' => 'User',
'allowedIps' => [
'123.45.67.89',
'123.45.*.*'
]
];
重要提示:由于 `IPAutoLogin
根据用户的 IP 地址创建会话,因此必须在
RequireAuthenticatedUser
之前执行此操作。这是因为
RequireAuthenticatedUser
中间件查找已验证用户(
IPAutoLogin
创建)。要使其在
RequireAuthenticatedUser
之前执行,请将其添加在 之后 - 因为 Slim 在外部调用中间件。
从 v2.6 开始,`IPAutoLogin
` 支持在 IP 地址中使用通配符。使用星号 (*) 表示 IP 地址的通配符部分。请注意,该插件目前仅支持 IPV4 地址。
// Invoke IPAutoLogin AFTER RequireAuthenticated user
// as Slim invokes middleware from outside and in
$app->group('', function () use ($app) {
$app->get('/someUrl', SomeClass::class . ':index');
})->add(RequireAuthenticatedUser::class)->add(IPAutoLogin::class);
Middleware\Translation
此中间件使用 PHP 中的 `gettext()
函数实现翻译。在某个位置的 `routes.php
` 中添加 $app->add(Translation::class);
,以便注册中间件。
首先,中间件从用户的浏览器中获取 `HTTP_ACCEPT_LANGUAGE
标头。其次,它检查 cookie。如果存在 cookie,则它优先于 `HTTP_ACCEPT_LANGUAGE
`。
您必须定义获取用户选择语言所用的 cookie 名称,以及 `gettext()`
配置函数的设置数组密钥。此配置可能添加到 `default.php
` 配置中。
define('QB_FRONTEND_TRANSLATION','frontendtranslation');
$settings[QB_SETTINGS][QB_FRONTEND][QB_FRONTEND_TRANSLATION] = [
'directory' => realpath(__DIR__ . '/../locales'),
'domain' => 'messages',
];
您必须定义 cookie 名称,这也可能添加到 `default.php
`
define('QB_FRONTEND_LANG_COOKIE','qbankfrontendlanguage');
最后,您必须能够在调用 `gettext()
后解析所有源文件,这应该使用翻译文件。最简单的方法是在前端项目中添加应用程序控制台,并使用以下命令:php app/console.php gettext:generate
和
gettext:compile
`。
截至2020年2月4日,在前端项目中可以找到一个工作良好的应用程序控制台实现,位于 frontends/peab-mediaportal。