【发布时间】:2018-03-13 21:26:54
【问题描述】:
TYPO3-版本:8.7.7
我想在 PHP 中的 TYPO3 验证器中访问 $this->request->getArguments()。
我在流体中设置了一个临时字段:
<label for="reenter_password" class="reenter_password{rm:hasError(property:'reenter_password',then:' text-danger')}">
Reenter Password*
</label><br>
<f:form.password name="reenter_password" id="reenter_password"/>
如果我在<f:form.password name="reenter_password" id="reenter_password"/> 中设置property 而不是name,我会收到以下错误:
#1297759968:属性路径“”的属性映射时出现异常:在“RM\RmRegistration\Domain\Model\User”类型的目标对象中找不到属性“reenter_password”。
我不想设置 Model-Property,因为该属性应该只用于检查密码字段是否相等,而不应该获取 TCA 或 SQL-Table 用于存储。
这是我的操作,我在其中调用验证器:
/**
* Complete New User Registeration
*
* @param User $newRegisteredUser
* @validate $newRegisteredUser \RM\RmRegistration\Validation\Validator\NewRegisteredUser
* @validate $newRegisteredUser \RM\RmRegistration\Validation\Validator\CompleteProfileUser
*/
public function completeNewRegisteredUserAction(User $newRegisteredUser)
{
// Store Changes, Update and Persist
$newRegisteredUser->setPassword($this->saltThisPassword($newRegisteredUser->getPassword()));
$this->userRepository->update($newRegisteredUser);
$this->objectManager->get('TYPO3\\CMS\\Extbase\\Persistence\\Generic\\PersistenceManager')->persistAll();
}
在验证器中,我可以通过以下方式进入密码字段:
\TYPO3\CMS\Core\Utility\GeneralUtility::_POST()['tx_rmregistration_registration']['reenter_password']
但是是否可以将 Value 临时提供给 UserModel 以在 Validator 中进行检查,如下所示:
// Compare Entered Passwords
if ($user->getPassword() == $user->getReenteredPassword()) {
return TRUE;
} else {
return FALSE;
}
【问题讨论】:
标签: typo3 fluid extbase typo3-8.7.x