SilverStripe PHP Forms - หากฉันซ้อน SelectionGroup ภายใน FieldGroup กล่องวิทยุ SelectionGroup_Items ที่เกี่ยวข้องอันใดอันหนึ่งจะไม่ปรากฏขึ้น ทำไม?


122

ฉันมีรูปแบบที่มีสองFieldGroups และFieldGroupฉันมี a SelectionGroup.

รายการSelectionGroup_ItemจะปรากฏในรูปแบบFieldGroupแต่กล่องวิทยุสำหรับเลือกตัวเลือกใดตัวเลือกหนึ่งไม่แสดง ถ้าฉันลบออกFieldGroupแล้วใช้งานได้อีกครั้ง

ฉันมองไปที่แม่แบบกรอบและถ้าผมเปลี่ยนFieldGroup_holder.ss SmallFieldHolderไปFieldHolderกล่องวิทยุปรากฏขึ้นอีกครั้งและการทำงานอย่างถูกต้อง ฉันได้ลองทำตามเทมเพลตเพื่อดูว่าเทมเพลตไหนไม่เชื่อฟังSelectionGroupแต่ฉันก็หลงทางอยู่เรื่อย ๆ

นี่คือตัวอย่างบิตของโค้ด

$fields = FieldList::create(
    FieldGroup::create(
        TextField::create('Name', 'Name')
    ),
    FieldGroup::create(
        SelectionGroup::create(
            'Test1or2',
            array(
                SelectionGroup_Item::create(
                    'Test1', array(
                        TextField::create('Test1', 'Test1')
                    ),
                    'Test1'
                ),
                SelectionGroup_Item::create(
                    'Test2', array(
                        TextField::create('Test2', 'Test2')
                    ),
                    'Test2'
                )
            )
        )
    )
),
FieldList::create(
    FormAction::create('submit', 'Submit')
)

6
ดูเหมือนว่า SelectionGroup ไม่มีSelectionGroup_small.ssเทมเพลตที่ใช้เมื่อคุณซ้อนฟิลด์ เพียงแค่สร้างในธีมของคุณและแก้ไข อาจเป็นเรื่องที่ควรค่าแก่การแจ้งปัญหาบนgithub
wmk

1
@wmk ไม่มีโชคมากขนาดนั้น มีอะไรอีกบ้างที่ฉันสามารถทำได้เพื่อให้มันใช้งานได้?
Rudiger

1
ฉันยังได้เพิ่มปัญหาคอมไพล์github.com/silverstripe/silverstripe-framework/issues/6637
Rudiger

1
นี่ไม่ใช่คำถามที่ดีและฉันไม่รู้ว่ามันได้รับการโหวตถึง 57 ครั้งโดยเฉพาะอย่างยิ่งเมื่อมีจำนวนการดูที่ต่ำ แต่ฉันเดาว่ามันจะไม่ไปไหนเพราะเหตุนั้น ปัญหาของคุณเกิดจาก HTML ที่สร้างขึ้น แต่คุณไม่ได้ระบุหรือให้ตัวอย่างผลลัพธ์ HTML ที่ต้องการ ตัวอย่างโค้ดของคุณไม่ถูกต้องตามหลักไวยากรณ์และไม่มีการระบุบริบทเกี่ยวกับตำแหน่งที่ใช้ หากคุณแก้ไขปัญหานี้ได้คุณควรโพสต์คำตอบ หากปัญหาไม่เกี่ยวข้องหรือเกิดซ้ำได้อีกต่อไปคุณควรลบคำถาม
miken32

6
@ miken32 จะทำเฉพาะกับเฟรมเวิร์ก SilverStripe (ด้วยเหตุนี้แท็ก) และมีการโพสต์ข้อบกพร่องบนที่เก็บ GitHub (ลิงก์ในความคิดเห็น) สาเหตุที่ไม่มี html เนื่องจากไม่มีเทมเพลต html สำหรับฟังก์ชันที่กำหนดนั่นคือจุดบกพร่อง นอกจากเซมิโคลอนในตอนท้ายแล้วฉันไม่รู้ว่าคุณกำลังพูดถึงอะไรมันไม่ถูกต้อง ทุกคนที่คุ้นเคยกับกรอบจะรู้บริบทของมัน ยังคงเป็นข้อบกพร่องที่เปิดอยู่และสามารถทำซ้ำได้ง่าย
Rudiger

คำตอบ:


1

คุณสามารถเพิ่ม fieldset id="hidden_field" aria-hidden="true"อีกแล้วตั้งค่าคุณสมบัติของมันไป ในเอกสาร css คุณสามารถทำสิ่งต่อไปนี้

    #hidden_field{
        display:none;
        height:0;
        width:0;
        margin:0;
        padding:0;
        visibility: hidden;
    }

สิ่งนี้ควรซ่อนพฤติกรรมการสืบค้นของ SilverStripe Framework ในรูปแบบ php ของฉันเองฉันมีวงเล็บสุ่มปรากฏขึ้นเมื่อใดก็ตามที่มีคนส่งแบบฟอร์มใหม่หลายครั้งภายใต้หมายเลขรหัสชิ้นส่วนที่แตกต่างกัน ฉันใช้วิธีนี้เพื่อซ่อนวงเล็บสุ่มบนไซต์ของฉัน


@Rudiger ใช้รหัสนี้เพื่อแก้ไขข้อผิดพลาดของกรอบ SilverStripe หรือไม่
JTS
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.