You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

重写EXT:femanager控制器Action后编辑表单验证失效求助

EXT:femanager自定义Action导致编辑表单验证失败的解决建议

问题背景

为EXT:femanager添加自定义fileDeleteAction,已重写UserController并修改FlexForm添加User->fileDelete动作,但编辑表单始终提示“该字段无法验证”。

解决步骤

1. 确认控制器重写生效

当前代码仅通过Hook修改了FlexForm,但未完成自定义控制器的注册。需在ext_localconf.php中添加控制器替换配置:

$GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['femanager']['controllers']['User']['className'] = \Vandor\Ext\Controller\UserController::class;

添加后清除系统缓存,确保TYPO3使用自定义的UserController。

2. 更新允许的控制器动作列表

根据FlexForm注释提示,必须修改PluginRepository中的允许动作字符串,否则Extbase会拦截未授权的动作。通过Xclass重写该类:

  • 在ext_localconf.php注册Xclass:
$GLOBALS['TYPO3_CONF_VARS']['SYS']['Objects'][\In2code\Femanager\Domain\Repository\PluginRepository::class] = [
    'className' => \Vandor\Ext\Domain\Repository\PluginRepository::class
];
  • 创建自定义PluginRepository类:
<?php
declare(strict_types=1);
namespace Vandor\Ext\Domain\Repository;

class PluginRepository extends \In2code\Femanager\Domain\Repository\PluginRepository {
    protected $scaString = 'New->new,create,createStatus,confirmCreateRequest;Edit->edit,update,delete,confirmUpdateRequest;User->list,show,imageDelete,fileDelete;Invitation->new,create,edit,update,delete,status;New->resendConfirmationDialogue,resendConfirmationMail';
}

这里将User->fileDelete添加到了允许的动作列表中。

3. 排查表单验证规则

编辑表单验证失败可能和companyDocuments字段的配置有关:

  • 检查该字段在TCA或femanager配置中的required属性,若设置为必填,删除后为空会触发验证失败,需调整为非必填。
  • 确保fileDeleteAction是独立请求,不要和编辑表单的提交逻辑混淆,避免误触发编辑表单的验证流程。

4. 检查请求与日志

  • 确认调用fileDeleteAction的链接生成正确,例如:
<f:link.action action="fileDelete" controller="User" arguments="{user: currentUser}" />
  • 查看var/log/目录下的TYPO3日志,获取验证失败的具体字段信息或Extbase动作授权错误,定位问题根源。

5. 清除所有缓存

修改配置后,务必清除TYPO3的系统缓存、页面缓存和配置缓存,确保所有新配置生效后再测试。


内容的提问来源于stack exchange,提问作者Geee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 07:04:56