小编nar*_*esh的帖子

Symfony表单:如何替换表单类/检索所有额外数据?

Symfony 2 Form Component确实是一种东西.我想你知道的.试图理解什么是有效的只是一个看似不可能的任务; 我在浏览代码库时非常有经验..但是人,Form组件.. OMG

TL; DR

以下是详细信息,本期试图提问

  • 是否有可能取代班级\Symfony\Component\Form\Form
  • 或者:如何从表单类型的所有字段轻松获取所有额外数据?
  • 或者,一个相关的问题:如果我这样做它究竟是如何工作的$form->add('ss', 'form')- 显然这个Core\FormType类涉及但是当我稍后检索它时,它是一个实例\Symfony\Component\Form\Form?这发生在哪里,这可能会覆盖,所以它在那里使用不同的类?

细节

情况

想象一下,接收深JSON有效负载的Controller.此有效负载通过Form进行解码和验证.现在,大多数JSON结构都由Models(Doctrine ODM Entities)映射.但是一些子属性只是"哈希" - 允许客户发布他想要的任何内容.
那些"哈希"子属性是类型形式的字段,是复合标记的,可以有额外的字段.

问题

最重要的是,我们的问题是,所有"额外字段"都不会被返回$form->getData().我们无法指定那些字段(及其类型),因为我们不知道会发生什么 - 因此所有这些数据都是extraData的一部分.

解决方案?

所以我想 - 好吧 - 让我们修改FormFactory,这样它就会返回我们的Form的自定义扩展 - 一个在调用getData时也返回extraData的扩展.容易对.Noo,不容易......

我的想法让我检查FormFactory,FormBuilders,ResolvedFormTypes,等等......以及在所有重要的地方(比如formBuilder->getForm()) - 我想要覆盖/替换的类是instanciated static - 没有使用DIC ..(!)

php forms rest json symfony

6
推荐指数
1
解决办法
205
查看次数

MongoDB 聚合管道:$match 与表达式不可能?

我正在做一个相当复杂的聚合管道并且有一个相当奇怪的现象 - 我在这里提取了一个简短的例子来形象化我的问题。

它似乎与MongoDb $addFields 和 $match 相关- 但它不包含任何信息供我解决手头的问题。

注意:请注意,我的问题不在于使用日期字段和/或处理值的具体示例,问题在于我无法$match使用表达式 - 使用之前添加的字段$addFields

鉴于 MongoDB:3.6.3(目前最新)

让我们插入一些测试数据:

db.testexample.insert({
   "dateField": new ISODate("2016-05-18T16:00:00Z")
});

db.testexample.insert({
   "dateField": new ISODate("2018-05-18T16:00:00Z")
});
Run Code Online (Sandbox Code Playgroud)

现在让我们制作一个简单的管道,只计算日期的年份和 $matches:

db.testexample.aggregate([
    {
        "$addFields": {
            "dateFieldYear": {"$year": "$dateField"}
        }
    },
    {
        "$match": {
            "dateFieldYear": {"$eq": "$dateFieldYear"}}
        }
    }
])
Run Code Online (Sandbox Code Playgroud)

--> 没有匹配项

它应该匹配,因为它是同一个领域?也许有更多技巧(使用$add)?

db.testexample.aggregate([
    {
        "$addFields": {
            "dateFieldYear": {"$year": "$dateField"}
        }
    },
    {
        "$match": {
            "dateFieldYear": {"$eq": {"$add": ["$dateFieldYear", 0]}}
        }
    }
])
Run Code Online (Sandbox Code Playgroud)

--> 没有匹配项

仍然没有骰子......接下来我认为变量完全是一个问题。所以让我们修正这些值: …

mongodb aggregation-framework

4
推荐指数
1
解决办法
6584
查看次数

标签 统计

aggregation-framework ×1

forms ×1

json ×1

mongodb ×1

php ×1

rest ×1

symfony ×1