【问题标题】:Do not copy domain model when duplicating page复制页面时不要复制域模型
【发布时间】:2013-03-18 15:04:14
【问题描述】:

我们有一个 Extbase 扩展,它有一个与 tt_content 元素相关联的域模型。当我们删除一个页面或内容元素时,所有相关的域模型项也会被删除。这很好,我们想要这种行为(否则我们会留下孤儿)。

但是我们的客户希望在复制页面时不会复制来自此域模型的项目。有没有办法告诉 TYPO3 在复制操作期间不要复制此扩展的域模型项?

编辑:我们在这个项目中使用 TYPO3 4.5。

【问题讨论】:

    标签: typo3 domain-model extbase


    【解决方案1】:

    处理此问题的唯一方法是将模型表添加到“不允许”部分,但这也会删除修改后端数据集的能力。

    这就是原因(在 TYPO3 6.0 中):

    文件:方法:\TYPO3\CMS\Core\DataHandling\DataHandler::copyPages

    $copyTablesArray = $this->admin ? $this->compileAdminTables() : explode(',', $this->BE_USER->groupData['tables_modify']);
    // If not all tables are allowed then make a list of allowed tables: That is the tables that figure in both allowed tables AND the copyTable-list
    if (!strstr($this->copyWhichTables, '*')) {
        foreach ($copyTablesArray as $k => $table) {
            // Pages are always going...
            if (!$table || !\TYPO3\CMS\Core\Utility\GeneralUtility::inList(($this->copyWhichTables . ',pages'), $table)) {
                unset($copyTablesArray[$k]);
            }
        }
    }
    

    $copyTablesArray 中设置的所有表都将被复制。如果当前登录的用户不是管理员,则它们在$this->BE_USER->groupData['tables_modify'] 中设置。

    也许添加此方法的替代实现可以解决此问题,但这不是很容易的方法。

    【讨论】:

    • 在 Rails 中,我会在模型中的 after_create 挂钩或在复制时触发的对象观察器中执行此操作,并在对象被持久化之前简单地清除 has_many 关联。 TYPO3中有类似的东西吗?有问题的 TYPO3 版本是 4.5,而不是 6.0。我已经发现有一些差异。顺便说一句:数据集没有在后端修改,而是代理到另一个处理这些数据集编辑的框架,因为 TYPO3 太慢了(每个后端页面加载 30 秒或更多)...
    猜你喜欢
    • 1970-01-01
    • 2019-11-22
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多