问题描述
我正在处理一个项目,我的任务是:设置一个页面来编辑我的用户帐户信息。为此,我必须使用 TYPO3 扩展 femanager。
我安装了扩展并将插件放在我的页面上。我有 4 个显示的字段(照片、电话号码和电子邮件)。但是当我提交表单时,出现此错误:
参数 2 传递给 In2code\Femanager\Utility\FrontendUtility::forceValues() 必须是 类型数组,给定 null,调用 /home/dev/rta/htdocs/typo3conf/ext/femanager/Classes/Controller/EditController.php 在第 69 行
我试图在互联网上寻找有类似问题的人,但找不到任何东西。我查看了代码,但由于它是基本扩展代码,我认为这不是问题的来源。用户存储在我的数据库中的 fe_users 表中,并且这些字段很好地预先填充了我现有的数据。
我在 3 周前刚刚学习了 TYPO3,所以我有很多差距,我还不是很熟悉。
如果有帮助,这里是我的 EditController.php(第 66 到 79 行):
public function updateAction(User $user)
{
$this->redirectIfDirtyObject($user);
$user = FrontendUtility::forceValues($user,$this->config['edit.']['forceValues.']['beforeAnyConfirmation.']);
$this->emailForUsername($user);
UserUtility::convertPassword($user,$this->settings['edit']['misc']['passwordSave']);
$this->signalSlotDispatcher->dispatch(__CLASS__,__FUNCTION__ . 'BeforePersist',[$user,$this]);
if (!empty($this->settings['edit']['confirmByAdmin'])) {
$this->updateRequest($user);
} else {
$this->updateAllConfirmed($user);
}
$this->redirect('edit');
}
这是我的 FrontendUtility 类(在第 69 行的 EditController 中使用):
public static function forceValues(User $user,array $settings)
{
foreach ((array)$settings as $field => $config) {
$config = null;
if (stristr($field,'.')) {
continue;
}
// value to set
$value = self::getContentObject()->cObjGetSingle($settings[$field],$settings[$field . '.']);
if ($field === 'usergroup') {
// need objectstorage for usergroup field
$user->removeAllUsergroups();
$values = GeneralUtility::trimExplode(',',$value,true);
$userGroupRepository = self::getUserGroupRepository();
foreach ($values as $usergroupUid) {
/** @var UserGroup $usergroup */
$usergroup = $userGroupRepository->findByUid($usergroupUid);
$user->addUsergroup($usergroup);
}
} else {
// set value
if (method_exists($user,'set' . ucfirst($field))) {
$user->{'set' . ucfirst($field)}($value);
}
}
}
return $user;
}
如果有人有想法,我很感兴趣!
PS:我使用 TYPO3 v9.5.8
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)