【问题标题】:symfony: csDoctrineActAsSortablePlugin and i18nsymfony:csDoctrineActAsSortablePlugin 和 i18n
【发布时间】:2011-12-09 08:35:34
【问题描述】:

[最初发布于Symfony forum,但尚未给出(正确)答案]。

有没有人设法将使用 csDoctrineActAsSortablePlugin 的可排序行为放在任何具有 i18n 字段的模型上? 一切都安装得很好,但是当尝试为 i18n 模型进行理论:数据加载夹具文件时,它因 MySQL 完整性约束违反有关重复键条目而崩溃。 i18n 模型需要特殊处理吗?

我的插件版本是 1.5.4.1 安装在 symfony 1.4.8 上。

除此之外,您是否知道在管理生成器中添加“moveup”“movedown”功能的任何其他解决方案(插件)?

【问题讨论】:

    标签: symfony1 internationalization jquery-ui-sortable


    【解决方案1】:

    我已经构建了一个自定义版本的 sfDoctrineBuildTask 类来解决这个问题:

    http://forum.symfony-project.org/viewtopic.php?t=37340#p136449

    【讨论】:

    • 太好了!我会试一试,让你知道。您是否想过在 csDoctrineActAsSortablePlugin 之上创建一个扩展插件?还是为现有的补丁提交?
    • 这种方法的缺点是需要将数据保存为php 格式。虽然方便且更具可读性,但这种格式与始终采用YAML 格式的数据导出(通过data-dump)不兼容
    【解决方案2】:

    我找到了一个比最初发布在 symfony 论坛上的更好的解决方法。

    1. 在您的schema.yml 中,将Sortable 行为注释到您的所有模型,并放置一个等效的position 列而不是这个(这是插件在数据库中为指定模型创建的实际列) 具有以下属性:

      position: { type: integer, notnull: false }
      
    2. 运行symfony doctrine:build --all --and-load --no-confirmation。这将正确插入数据库中的所有数据。

    3. 恢复您的 schema.yml 并运行 symfony doctrine:build --all-classes --model --forms --filters。这将在您的模型中恢复 Sortable 行为,而不会影响您的数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-21
      • 2012-04-01
      • 2018-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多