我创建了一个视图助手,它曾用于TYPO3 7.6,但已停止在TYPO3 8.7上工作。即使调试时evaluateCondition
的返回值正确,它也会始终呈现else部分。
调试时,我看到AbstractConditionViewHelper
中的AbstractConditionViewHelper
被调用,并且renderThenChild
或renderElseChild
被调用。但是那里缺少子节点。
我的助手:
<?php
namespace Vendor\Extkey\ViewHelpers;
class IfRegExpViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractConditionViewHelper
{
/**
* Initialize arguments
* @throws \TYPO3\CMS\Fluid\Core\ViewHelper\Exception
*/
public function initializeArguments() {
$this->registerArgument('then', 'mixed', 'Value to be returned if the condition if met.', false);
$this->registerArgument('else', 'mixed', 'Value to be returned if the condition if not met.', false);
$this->registerArgument('value', 'string', 'The value', TRUE);
$this->registerArgument('pattern', 'string', 'The regex pattern to check', TRUE);
}
/**
* Check if pattern matches
*
* @param array $arguments ViewHelper arguments to evaluate the condition for this ViewHelper, allows for flexiblity in overriding this method.
* @return string the rendered string
* @api
*/
protected static function evaluateCondition($arguments = NULL)
{
if (preg_match($arguments['pattern'], $arguments['value']) === 1) {
return true;
} else {
return false;
}
}
}
模板中的用法:
<f:if condition="{eddaylight:IfRegExp(value: overview, pattern: '/[a-zA-Z0-9]+/')}">
<f:then>
{overview}
</f:then>
<f:else>
something else
</f:else>
</f:if>
我需要做些什么来解析子节点吗?
答案 0 :(得分:3)
import paramiko
ssh = paramiko.SSHClient()
ssh.connect('127.0.0.1', username='name', password='pass')
错误 - 您编写的ViewHelper是一个条件ViewHelper本身,因此它返回class UserProfileManager {
static var userProfile: UserProfileData?
private static var sharedManager: UserProfileManager = {
let shared = UserProfileManager()
return shared
}()
class func shared() -> UserProfileManager {
return sharedManager
}
}
或<f:if condition="{eddaylight:IfRegExp(value: overview, pattern: '/[a- zA-Z0-9]+/')}">
<f:then>
{overview}
</f:then>
<f:else>
something else
</f:else>
</f:if>
节点/ closure /参数的值,如果没有指定,则不返回任何内容。你上面写的内容与:
then
这显然是错误的。
使用ViewHelper的方法是:
else
同样适用于<f:if condition="">
的每个其他子类。
关于子节点的注意事项: