【问题标题】:Correct domain model variable lowerUpperCase正确的域模型变量 lowerUpperCase
【发布时间】:2016-09-13 10:55:06
【问题描述】:

我在 TCA 中创建了一个具有“external_url”属性的域模型。但是在域模型中,我写了“externalURL”而不是“externalUrl”。现在我想纠正这个。但总是当我改变这个时,我得到一个异常“#1251315967:无法确定子对象类型。”

我已经清除了安装工具中的缓存(typo3 缓存和操作码缓存)并清除了数据库中的所有cf_* 表。我还手动删除了typo3temp/Cache/ 目录。但错误并没有消失。

我该怎么做才能让这个重命名生效!?在我的开发环境中,它可以立即运行......

编辑:更多信息:

我在领域模型中的注解:

/**
 * @var string
 */
protected $externalUrl = '';

我的 TCA:

  'external_url'           => array(
    'exclude' => 0,
    'label'   => 'LLL:EXT:my_ext/Resources/Private/Language/locallang_db.xlf:tx_myext_domain_model_model.external_url',
    'config'  => array(
      'type' => 'input',
      'max' => 1024,
      'size' => 50,
      'softref' => 'typolink',
      'eval' => 'trim',
      'wizards' => array(
        'link' => array(
          'icon' => 'link_popup.gif',
          'JSopenParams' => 'height=300,width=500,status=0,menubar=0,scrollbars=1',
          'module' => array(
            'name' => 'wizard_element_browser',
            'urlParameters' => array(
              'mode' => 'wizard'
            )
          ),
          'title' => 'LLL:EXT:cms/locallang_ttc.xlf:header_link_formlabel',
          'type' => 'popup'
        ),
        '_PADDING' => 2
      )
    )
  ),

如果需要 sql 列定义:

external_url varchar(1024) DEFAULT '' NOT NULL,

【问题讨论】:

  • 我尝试将字段重命名为externalUri(external_uri),但出现同样的异常...

标签: caching typo3 extbase typo3-6.2.x


【解决方案1】:

您是否已停用/激活扩展程序? 你清除了/typo3temp/autoload/ 吗?

一些信息存储在缓存之外,这些信息可以通过内置按钮清除。

如果加载顺序很重要(最后激活的扩展最后加载),也可能涉及缺少依赖项。确保有干净的依赖关系!

【讨论】:

  • 停用/激活帮助。扩展没有依赖。自动加载目录不存在。
  • 记录一下,下次可以使用安装工具“清除所有缓存”。如果该操作有帮助,那是因为反射缓存会在您使用安装工具时清除。如果其他扩展依赖于您要重新加载的扩展,那就容易多了。
  • @ClausDue:我已经使用了几次“清除所有缓存”。
  • 除非您通过安装工具执行此操作,否则不会清除系统缓存。要获得显式清除系统缓存的访问权限,您的站点必须处于开发环境中(通过 Apache 中的 SetEnv)。无论开发环境如何,安装工具缓存清除都会始终清除此缓存。
【解决方案2】:

您很可能在一个或多个 1) 属性名称或 2) 模型中缺少/不正确的 @var 注释中存在拼写错误或类似错误。当反射框架无法通过分析特定属性的注释来确定特定属性的类型时,就会出现错误。

【讨论】:

  • 我的注释看起来正确。我已经用附加代码更新了我的问题。
  • 扫描您的项目以查找对旧名称的所有引用,包括在 Fluid 模板中。确保您没有使用错误的名称发布或以其他方式将属性名称发送到插件操作。使用安装工具清除系统缓存(这是反射缓存所在的位置)。除此之外,我们需要很多更多信息才能找到您的问题,我几乎可以肯定您会在我上面的一个或多个建议中找到原因。
【解决方案3】:

您有任何可能引用旧属性的数据吗? 数据库表有效吗?

【讨论】:

  • 我没有发现任何旧名称的出现。该属性仅在同一扩展中的流体中使用,并且也被重命名。数据库表正在工作。模型的所有其他字段都可以访问并正常工作。
  • 您是否停用/激活了扩展程序?你清除 /typo3temp/autoload/ 了吗?
  • de- 并激活扩展解决了问题...你有解释为什么吗?我已经清除了几次缓存。多次清除许多“cf_”表,并在整个项目中搜索旧属性的出现,但没有找到任何东西。
  • 也许你会用 deactivate/activate 作为答案给出提示,以便我可以标记它。
猜你喜欢
  • 1970-01-01
  • 2018-12-16
  • 1970-01-01
  • 2019-10-14
  • 1970-01-01
  • 1970-01-01
  • 2012-08-14
  • 1970-01-01
相关资源
最近更新 更多