du127953 2014-04-16 07:37
浏览 28
已采纳

ZF2:嵌套字段集; 结合和水合作用

I'm trying to deal with some fieldsets witch are bind with the same table entity, and nested in some other one. Exemple:

Model:

Table Building
-> Name
-> Description
-> street name
-> street Number
-> consierge's phone
-> level count
-> height
-> Year of construction

All this fields are in one table but i whant to use multiples fieldset, like this for exemple:

descriptionBlgFieldset
->name
->description

AddressBlgFieldset
->street Name
->street Number
-> consierge's phone

FeaturesBlgFieldset
-> level count
-> height
-> Year of construction

Then i whant to blend those in some other field set, for exemple description with address, or description with features, or all of them. I was thinking this was peace of cake, but i dont know how to deal for the binding:

echo $form->get('building')->get('address')->get('streetNumber)

give me:

<input name="building[addresse][streetNumber]" />

But it's must be:

<input name="building[streetNumber]" />

I what thinking about the "set_as_base_fieldset" option, but it's only work when I'm hadding a fieldset in a form object, not in a fieldset.

How could i do that? (i hope this whas clear enought)

  • 写回答

1条回答 默认 最新

  • douya1974 2014-04-16 08:14
    关注

    If you want building[streetNumber] then you don't want to use a Fieldset. That's really all there is to it. A Zend\Form\Fieldset is an Element that encapsulates a set of properties that are standalone / their own object. For example:

    Table Buildings
    - id
    - attr1
    - addr_id
    
    Table Addresses
    - id
    - name
    - nr
    

    In this case you'd have an AddressFieldset. But this isn't what you want. I assume you only divided this into fieldsets to have an impact on the default rendering. This is a mis-use of Zend\Form\Fieldset. You simply will have to render your form differently like

    echo $this->form()->openTag($form);
    echo "<fieldset>
    ";
    echo "    <legend>Address</legend>
    ";
    echo $this->formRow($form->get('streetName'));
    echo $this->formRow($form->get('streetNuber'));
    echo "</fieldset>
    ";
    echo "<fieldset>
    ";
    echo "    <legend>Features</legend>
    ";
    echo $this->formRow($form->get('levelCount'));
    echo $this->formRow($form->get('height'));
    echo "</fieldset>
    ";
    echo $this->form()->closeTag();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 求给定范围的全体素数p的(p-2)的连乘积
  • ¥15 VFP如何使用阿里TTS实现文字转语音?
  • ¥100 需要跳转番茄畅听app的adb命令
  • ¥50 寻找一位有逆向游戏盾sdk 应用程序经验的技术
  • ¥15 请问有用MZmine处理 “Waters SYNAPT G2-Si QTOF质谱仪在MSE模式下采集的非靶向数据” 的分析教程吗
  • ¥50 opencv4nodejs 如何安装
  • ¥15 adb push异常 adb: error: 1409-byte write failed: Invalid argument
  • ¥15 nginx反向代理获取ip,java获取真实ip
  • ¥15 eda:门禁系统设计
  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页