扩展 TYPO3 femanager

2024-03-06

有人有一个如何在 TYPO3 8.7 上扩展 femanager 3.3.0 的工作示例吗?

我创建了一个新的扩展来完成所有的事情(fe_user、TCA、Partials 的新数据库字段......)。我在 femanager 插件中有新字段,可以为前端选择它们。

注册正在运行:新字段保存在数据库中。 日志中有一条警告:

Core: Error handler (FE): 
PHP Warning: Declaration of TOCO3\TocoLedes\Controller\NewController::createAction(TOCO3\TocoLedes\Domain\Model\User $user) 
should be compatible with In2code\Femanager\Controller\NewController::createAction(In2code\Femanager\Domain\Model\User $user) in \www\typo3conf\ext\toco_ledes\Classes\Controller\NewController.php line 0 

不过,这似乎不是问题。

但是:编辑

配置文件编辑页面显示我的所有新字段(在插件中选择),但不加载这些字段的值(它们是空的)。如果我尝试保存配置文件,则会收到以下错误:

Core: Exception handler (WEB): 
Uncaught TYPO3 Exception: #1297759968: 
Exception while property mapping at property path "": 
Property "newfield" was not found in target object of type 
"In2code\Femanager\Domain\Model\User". | 
TYPO3\CMS\Extbase\Property\Exception thrown in file 
\www\typo3_src-8.7.8\typo3\sysext\extbase\Classes\Property\PropertyMapper.php in line 127. 

很奇怪的是,创建(注册)可以工作,但编辑却不能!

我认为有趣的部分是

config.tx_extbase{
    persistence{
        classes{
            In2code\Femanager\Domain\Model\User {
                subclasses {
                    0 = TOCO3\TocoLedes\Domain\Model\User
                }
            }
            TOCO3\TocoLedes\Domain\Model\User {
                mapping {
                    tableName = fe_users
                    recordType = 0
                }
            }
        }
    }
    objects {
        In2code\Femanager\Controller\NewController.className = TOCO3\TocoLedes\Controller\NewController
        In2code\Femanager\Controller\EditController.className = TOCO3\TocoLedes\Controller\EditController
    }
}

编辑控制器.php

namespace TOCO3\TocoLedes\Controller;

class EditController extends \In2code\Femanager\Controller\EditController {

    /**
     * action update
     *
     * @param TOCO3\TocoLedes\Domain\Model\User $user
     * @validate $user In2code\Femanager\Domain\Validator\ServersideValidator
     * @validate $user In2code\Femanager\Domain\Validator\PasswordValidator
     * @return void
     */
    public function updateAction(\TOCO3\TocoLedes\Domain\Model\User $user) {
        parent::updateAction($user);
    }
}

我期待任何想法或 - 这将是伟大的 - 一个工作示例扩展(不幸的是 femanagerextend ist 过时了:-( )


为了帮助其他遇到同样问题的人,也许我也有针对 PHP 7 警告的解决方案(在 Steffen Kamper 的帮助下以及这里的一些提示:https://github.com/einpraegsam/femanagerextended/issues/1 https://github.com/einpraegsam/femanagerextended/issues/1):

  1. 创建一个 XCLASS

    myext/XClass/Extbase/Mvc/Controller/Argument.php

    <?php
    namespace  TOCO3\MyExt\Xclass\Extbase\Mvc\Controller;

    class Argument extends \TYPO3\CMS\Extbase\Mvc\Controller\Argument
    {
        /**
         * Set data type for femanager workaround.
         * Workaround to avoid php7 warnings of wrong type hint.
         *
         * @param $dataType
         * @return $this
         */
        public function setDataType($dataType) {
            $this->dataType = $dataType;
            return $this;
        }
     }
  1. 注册这个XClass myext/ext_localconf.php
    $GLOBALS['TYPO3_CONF_VARS']['SYS']['Objects']['TYPO3\\CMS\\Extbase\\Mvc\\Controller\\Argument'] = array('className' => 'TOCO3\\MyExt\\Xclass\\Extbase\\Mvc\\Controller\\Argument');
  1. 在 NewController.php 中
    <?php
    namespace TOCO3\MyExt\Controller;
    use TOCO3\MYExt\Domain\Model\User;
    class NewController extends \In2code\Femanager\Controller\NewController {

        /**
         * @return void
         */
        public function initializeCreateAction()
        {
            if ($this->arguments->hasArgument('user')) {
                // Workaround to avoid php7 warnings of wrong type hint.
                /** @var \TOCO3\MyExt\Xclass\Extbase\Mvc\Controller\Argument $user */
                $user = $this->arguments['user'];
                $user->setDataType(\TOCO3\MyExt\Domain\Model\User::class);
            }
        }

        /**
         * action create
         *
         * @param User $user
         * @validate $user In2code\Femanager\Domain\Validator\ServersideValidator
         * @validate $user In2code\Femanager\Domain\Validator\PasswordValidator
         * @validate $user In2code\Femanager\Domain\Validator\CaptchaValidator
         * @return void
         */
        public function createAction(\In2code\Femanager\Domain\Model\User $user) {
            parent::createAction($user);
        }
    }
  1. 在EditController.php中
    <?php
    namespace TOCO3\MyExt\Controller;
    use \TOCO3\MyExt\Domain\Model\User;
    class EditController extends \In2code\Femanager\Controller\EditController {


        /**
         * @return void
         */
        public function initializeUpdateAction()
        {
            if ($this->arguments->hasArgument('user')) {
                // Workaround to avoid php7 warnings of wrong type hint.
                /** @var \TOCO3\MyExt\Xclass\Extbase\Mvc\Controller\Argument $user */
                $user = $this->arguments['user'];
                $user->setDataType(\TOCO3\MyExt\Domain\Model\User::class);
            }
        }

        /**
         * action update
         *
         * @param User $user
         * @validate $user In2code\Femanager\Domain\Validator\ServersideValidator
         * @validate $user In2code\Femanager\Domain\Validator\PasswordValidator
         * @validate $user In2code\Femanager\Domain\Validator\CaptchaValidator
         * @return void
         */
        public function updateAction(\In2code\Femanager\Domain\Model\User $user) {
            parent::updateAction($user);
       }
     }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

扩展 TYPO3 femanager 的相关文章

  • TYPO3 Extbase 有关后端删除对象的单独代码

    当我的 Extbase 域对象之一从 TYPO3 后端的列表视图中删除时 我想执行一些单独的代码 认为它可以通过覆盖来工作remove o 相应存储库中的方法 例如 public function remove object parent
  • TYPO3 中的 eID 是什么?

    我已经多次遇到这个词了 通常 资源会直接解释如何做某事 但没有提及这是什么或它的用途 另外 很多资源都是德语的 或者不是很清楚 So 什么是 eID 这是 TYPO3 特有的东西还是一般概念 你能用它做什么 这对于 TYPO3 gt 9 仍
  • TYPO3 无法启用 htmlArea RTE

    我尝试在 TYPO3 6 2 LTS 版本 中安装模块 htmlArea RTE 在 扩展管理器 中 他是活动的 但是在 页面 中 当我编辑或创建新的文本记录时 所见即所得不会出现 我使用的是 Firefox 但我尝试了其他浏览器 但他也没
  • TYPO3 TCA 类型在 FLUID 中选择?

    我在 T3 后端使用 TCA 类型选择 renderType selectMultipleSideBySide 这里是 TCA 代码 features gt array label gt Zusatz config gt array typ
  • Typo3:8.7.9 CKeditor 保存后删除块样式

    我在 Typo3 中有以下 CKEditor 的 YAML 配置 Load default processing options imports resource EXT rte ckeditor Configuration RTE Pro
  • “无法分析类:可能未加载或没有自动加载器?”

    我用一个 viewhelper 创建了 我的第一个 扩展 糟糕 出现错误 无法分析类 My Mlv ViewHelpers Format ReplacenewlinesViewHelper 可能未加载或没有自动加载器 使用中 有新闻 nam
  • 如何在 TYPO3 Extbase 扩展中包含或自动加载外部库? + 依赖注入?

    我正在使用 Extbase 1 4 开发 TYPO3 4 6 扩展 并且尝试包含外部库 图书馆 就我而言脸书 PHP SDK https github com facebook facebook php sdk 在下面 EXTKEY Res
  • 在调度程序任务中使用removeAll()

    在做新的事情之前 我希望我的调度程序任务从数据库中删除所有条目 执行函数如下所示 public function execute objectManager TYPO3 CMS Core Utility GeneralUtility mak
  • TYPO3 可以在没有typo3temp 目录本地文件存储的情况下运行吗?

    TYPO3应该如何在基于Docker的架构上运行 例如Divio https www divio com其中 多个容器并行运行 在没有警告的情况下被回收 没有共享的本地文件存储 似乎需要写到typo3temp 以及其他一些文件位置 在 TY
  • Fluid Typo3 - 如何从不同页面 uid 获取通过 Flux 定义的变量

    我想我的问题很容易解决 但我想了好几天 谷歌搜索并没有帮助我 也许我只是不明白这个概念 在我的提供程序扩展中 我定义了一个带有一个配置选项的简单主页 根据页面中 fontawesomeicon 的含义 其相应的 Fonteawesome I
  • TYPO3 Extbase如何清空ObjectStorage

    我想在更新对象时 清空 ObjectStorage 它是 TYPO3 4 6 带有 Extbase 扩展 允许您在前端显示 添加 编辑 删除数据集 乍一看一切看起来都不错 我有一个字段引用另一张表 TCA partner gt array
  • 将插件插入流体模板?

    扩展名客搜索 https typo3 org extensions repository view ke search有一个搜索字段插件 我想将其插入到我的流体模板中并显示在每个页面上 我对此很陌生 不知道如何开始 任何帮助表示赞赏 您可以
  • 使用fluid_styled_content,如何在TYPO3 7.5和7 LTS中创建自定义内容元素?

    有人告诉我 使用新的 Fluid styled content 系统扩展在 TYPO3 7 5 中为后端设置自定义的结构化内容元素是一件轻而易举的事 看完之后sysext fluid styled content and sysext ba
  • 如何使用 TYPO3 extbase Fluid 正确输出 DateTime

    我在数据库中存储了两个 dateTime 对象 2014 11 03 09 00 00 2014 10 21 13 45 00 当我尝试使用 ViewHelper format date 输出它们时
  • Typo3 在特定页面的 body 标签中添加类

    我试图弄清楚如何有条件地将类添加到特定页面的正文标记 我试图通过typoscipt 来做到这一点 但一直无法弄清楚 也许有更好的方法来做到这一点 该网站使用的是 Typo3 版本 4 4 6 我试过这个没有用 page 4 bodyTag
  • Typo3:如何上传文件并创建文件引用?

    我将尝试在 FE 中上传一个文件 或稍后的多个文件 这有效 就像我当前的代码一样 但是我现在如何获取该文件的文件引用呢 var array fileData var integer feUserId return TYPO3 CMS Ext
  • 如何为 tx_news TYPO3 设置面包屑

    我有一个 TYPO3 网站 我需要设置面包屑 对于新闻 我需要显示新闻标题来代替 新闻详细信息 新闻插件的页面标题 如何实施 我的代码是
  • TYPO3:如何将页面内容插入模板

    我有一些内容想要出现在 TYPO3 网站的多个页面上 我可以将其插入模板中 但我还希望该内容可以在富文本编辑器中编辑 所以我有了创建隐藏页面的想法 但我不知道如何将此内容插入到模板中 是否需要select打字稿声明 另外 作为后续问题 我可
  • 如何对单个 TypoSript 对象生成进行基准测试?

    我想对单个 TypoScript 对象生成进行基准测试以控制性能 是否可以使用某些 stdWrap 方法 我想要对其进行基准测试的 TS 对象示例 Test 1 page 10 RECORDS page 10 tables pages so
  • TYPO3 6 需要哪些 PHP 函数?

    我刚刚全新安装了 TYPO3 6 1 系统环境检查告诉我 我的服务器上禁用了某些 PHP 功能 我在我的服务器上使用 Froxlor 来管理域等 因此 我可以完全控制这台机器 但我不确定哪些功能是真正必要的 有些功能对我来说似乎相当危险 所

随机推荐