作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何迁移此 TypoScript 条件以与 Symfony 表达式语言完全兼容 TYPO3 9.5 中的条件?[userFunc = TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('fluid_styled_content')]
最佳答案
您现在必须提供自己的功能。
这里有教程:https://usetypo3.com/symfony-expression-language-in-typo3.html
但基本上你会有文件 yourext/Configuration/ExpressionLanguage.php
内容如下:
<?php
return [
'typoscript' => [
\Vendor\Yourext\ExpressionLanguage\ConditionProvider::class
]
];
expressionLanguageProviders
那个类的。
<?php
namespace Vendor\Yourext\ExpressionLanguage;
use TYPO3\CMS\Core\ExpressionLanguage\AbstractProvider;
class ConditionProvider extends AbstractProvider
{
public function __construct()
{
$this->expressionLanguageProviders = [
UtilitiesConditionFunctionsProvider::class,
SomeOtherConditionFunctionsProvider::class,
AThirdConditionFunctionsProvider::class,
];
}
}
\Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface
界面,基本上只是一个
getFunctions
需要返回
\Symfony\Component\ExpressionLanguage\ExpressionFunction
数组的方法实例。
<?php
namespace Vendor\Yourext\ExpressionLanguage;
use Symfony\Component\ExpressionLanguage\ExpressionFunction;
use Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface;
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
class UtilitiesConditionFunctionsProvider implements ExpressionFunctionProviderInterface
{
/**
* @return ExpressionFunction[] An array of Function instances
*/
public function getFunctions()
{
return [
$this->getIntersectsFunction(),
$this->getExtensionLoadedFunction(),
];
}
/**
* @return ExpressionFunction
*/
protected function getIntersectsFunction()
{
return new ExpressionFunction('intersects', function () {
// Not implemented, we only use the evaluator
}, function ($arguments, $left, $right) {
return count(array_intersect($left, $right)) > 0;
});
}
protected function getExtensionLoadedFunction()
{
return new ExpressionFunction('loaded', function () {
// Not implemented, we only use the evaluator
}, function ($arguments, $extKey) {
return ExtensionManagementUtility::isLoaded($extKey);
});
}
}
intersects( ... )
和
loaded( ... )
在我的条件下。
关于TYPO3:如何将 userFunc TypoScript 条件迁移到 Symfony 表达式语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58821112/
我是一名优秀的程序员,十分优秀!