SilverStripe PHP Forms - Nếu tôi lồng một SelectionGroup bên trong FieldGroup, một trong những Hộp Radio của SelectionGroup_Items có liên quan sẽ không hiển thị. Tại sao?


122

Tôi có một biểu mẫu có hai FieldGroups, và trong một biểu mẫu FieldGroup, tôi có một SelectionGroup.

Các SelectionGroup_Items hiển thị trong biểu mẫu FieldGroupnhưng hộp radio để chọn một trong các tùy chọn không hiển thị. Nếu tôi loại bỏ FieldGroupnó thì nó hoạt động trở lại.

Tôi đã xem xét các mẫu khung và nếu tôi thay đổi FieldGroup_holder.ss SmallFieldHolderthành FieldHoldercác hộp radio sẽ xuất hiện trở lại và hoạt động bình thường. Tôi đã thử làm theo các mẫu để xem cái nào không tuân theo SelectionGroupnhưng tôi cứ bị lạc.

Đây là một đoạn mã ví dụ

$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
Có vẻ như SelectionGroup không có SelectionGroup_small.ssmẫu được sử dụng khi bạn lồng các trường. Chỉ cần tạo nó trong chủ đề của bạn và sửa đổi nó. Cũng có thể đáng để nêu vấn đề trên github
wmk 20/02/2017

1
@wmk không gặp nhiều may mắn với điều đó. Tôi có thể làm gì khác để làm cho nó hoạt động không?
Rudiger

1
Tôi cũng đã thêm vấn đề git github.com/silverstripe/silverstripe-framework/issues/6637
Rudiger

1
Đây không phải là một câu hỏi hay và tôi không biết làm thế nào mà nó thu được 57 lượt ủng hộ, đặc biệt là với số lượt xem thấp, nhưng tôi đoán nó sẽ không đi đến đâu vì điều đó. Vấn đề của bạn là với HTML được tạo, nhưng bạn không cung cấp hoặc cung cấp ví dụ về đầu ra HTML mong muốn. Mẫu mã của bạn không hợp lệ về mặt cú pháp và không có ngữ cảnh nào được cung cấp về nơi nó được sử dụng. Nếu bạn đã giải quyết vấn đề này bằng cách nào đó, bạn nên đăng một câu trả lời; nếu vấn đề không còn liên quan hoặc có thể tái tạo, bạn nên xóa câu hỏi.
miken32

6
@ miken32 nó phải làm cụ thể với khuôn khổ SilverStripe (do đó là thẻ) và một lỗi đã được đăng trên kho lưu trữ GitHub (được liên kết trong nhận xét). Lý do không có html là vì không có mẫu html cho các chức năng nhất định, đó là lỗi. Ngoài dấu chấm phẩy ở cuối, tôi không biết bạn đang nói gì về việc nó không hợp lệ về mặt cú pháp. Bất cứ ai quen thuộc với khuôn khổ sẽ biết bối cảnh cho nó. Nó vẫn là một lỗi mở và có thể dễ dàng tái tạo.
Rudiger

Câu trả lời:


1

Bạn có thể thêm một bộ trường khác, sau đó đặt thuộc tính của nó thành id="hidden_field" aria-hidden="true". Trong tài liệu css, bạn có thể làm như sau.

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

Điều này sẽ ẩn hành vi truy vấn của SilverStripe Framework. Trong các biểu mẫu php của riêng tôi, tôi có dấu ngoặc đơn ngẫu nhiên xuất hiện bất cứ khi nào ai đó gửi biểu mẫu mới nhiều lần dưới các số part-id khác nhau. Tôi đã sử dụng phương pháp này để ẩn các dấu ngoặc ngẫu nhiên trên trang web của mình.


@Rudiger mã này có hoạt động để khắc phục lỗi của khung công tác SilverStripe không?
JTS
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.