小编Dai*_*mos的帖子

ZF2和Doctrine输入过滤器(Unique,ObjectExists)用于具有字段集的新实体和现有实体

我学习学说,我有一个表格.ZF2和学说与字段"电子邮件".这个字段必须是唯一的,所以我需要验证器.我也使用了字段集(这里很重要).问题是,当我使用时:

DoctrineModule\Validator\UniqueObject
Run Code Online (Sandbox Code Playgroud)

创建新实体是不可能的.此验证器需要主键进行比较.验证器转储错误消息:

包含itemId的预期上下文

itemId是我的主键.

显而易见,我需要使用UniqueObject进行更新,并且:

DoctrineModule\Validator\NoObjectExists
Run Code Online (Sandbox Code Playgroud)

对于新实体.问题是:

为现有实体和新实体存储不同的输入过滤器规范的最佳方法是什么?

或者,如果可能的话,更好:如何使用具有zend表单字段集的新记录和现有记录的唯一验证程序.

如果我把它放在表单中,我需要在控制器内修改它,如果实体是新的或没有.不太好主意.

我认为最好的方法是存储输入过滤规范.在实体存储库内部,但我如何检查实体是否是新的?

----编辑

我看到文档,我知道如何使用唯一对象但我有如前所述的错误:"包含itemId的预期上下文".我认为问题在于字段集(即时使用它).我不明白该怎么做(文档中的文字):

如果省略use_context选项或将其设置为false,则必须将包含fields-和identifier-values的数组传递给isValid().使用Zend\Form时,如果您正在使用fieldsets,则需要此行为 .

好吧我使用现场集,所以现在我能做什么?我在使用zend表单时如何将正确的值传递给isValid?

php doctrine-orm zend-framework2

5
推荐指数
1
解决办法
1702
查看次数

Doctrine - 一个带有多个实体标签的表格

我想创建带有分类词汇表的 Tag 实体类,它将被多个实体使用。有没有可能,用三列创建多条关系?我需要存储标签 id、实体 id 和实体类名。

所以我现在有:

<?php
/**
 * Taxonomy
 *
 * @ORM\Table(
 *    name="tag_taxonomy",
 *    indexes={
 *        @ORM\Index(name="tag_taxonomy_namex", columns={"name"})
 *    }
 * )
 * @ORM\HasLifecycleCallbacks
 * @ORM\Entity
 */
class Taxonomy
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;
    /**
     * @var string
     * @ORM\Column(name="name", type="string", length=50)
     */
    protected $name;
    /**
     * @ORM\OneToMany(targetEntity="Tag", mappedBy="taxonomy", fetch="LAZY")
     */
    protected $tags;
    // .....
}
Run Code Online (Sandbox Code Playgroud)

标签表:

<?php
/**
 * Tag
 *
 * @ORM\Table(
 *     name="tag", …
Run Code Online (Sandbox Code Playgroud)

symfony doctrine-orm

2
推荐指数
1
解决办法
1226
查看次数

电子的Vuex动作调度问题

我有Vuex的电子应用程序。使用模块(我的测试模块Browser.js)为整个应用配置了商店:

export default {
  namespaced: true,
  state: {
    currentPath: 'notSet'
  },
  mutations: {
    setPath (state) {
      state.currentPath = 'xxxx'
    }
  },
  actions: {
    updateCurrentPath ({ commit }) {
      console.log('COMMIT')
      commit('setPath')
    }
  },
  getters: {
    getCurrentPath (state) {
      return state.currentPath
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

现在,在组件Im中尝试分发更新操作失败。吸气剂工作正常:

mounted () {
  console.log('mounted')
  console.log('# GET FROM STORE:', this.$store.getters['Browser/getCurrentPath'])
  console.log('# DISPATCH:', this.$store.dispatch('Browser/updateCurrentPath'))
  console.log('# GET FROM STORE 2:', this.$store.getters['Browser/getCurrentPath'])
},
Run Code Online (Sandbox Code Playgroud)

安慰:

mounted
Browser.vue?31a5:62 # GET FROM STORE: notSet
Browser.vue?31a5:63 # DISPATCH: undefined
Browser.vue?31a5:64 # GET FROM STORE 2: …
Run Code Online (Sandbox Code Playgroud)

javascript vue.js electron vuex vuex-modules

2
推荐指数
1
解决办法
1057
查看次数