Связанные записи в форме Safecracker?

Я пытаюсь создать форму Safecracker в ExpressionEngine, чтобы создать рецепт. У меня есть канал рецептов, в котором может быть много ингредиентов из канала ингредиентов (используя надстройку с несколькими отношениями от devot:ee). Однако у меня возникли проблемы с перечислением ингредиентов в моей форме. Это моя разметка:

{exp:safecracker channel='recipes' datepicker='no' id='add-recipe-form' include_jquery='no' return='recipes/view/ENTRY_ID' safecracker_head='no'}
    {related_entries id='ingredients'}
        {title}
    {/related_entries}
{/exp:safecracker}

Проблема в том, что фактические теги EE просто выводятся на моей веб-странице.

Я полагаю, что делаю что-то принципиально неправильное, так может ли кто-нибудь указать мне правильное направление? Спасибо.


person Martin Bean    schedule 30.03.2012    source источник


Ответы (2)


Это называется «коллизией переменных» — вы вкладываете записи, которые используют те же имена переменных/тегов, что и родительский тег (в данном случае {title}), и из-за того, как порядок синтаксического анализа работает, родительский тег выигрывает каждый раз.

Решение состоит в том, чтобы поместить приведенный выше код в другой шаблон и встроить этот шаблон в свой Safecracker. форма. Встраивания запускаются в самом конце обработки шаблона, после того как проанализированы все остальные теги EE, поэтому вы не столкнетесь с такой же коллизией.

person Derek Hogue    schedule 02.04.2012
comment
Спасибо, Дерек. Это будет полезно знать для будущего развития! - person Martin Bean; 02.04.2012

Дерек прав, вам нужно встроить соответствующие записи. У меня это работает на моем сайте встреч в Торонто EE с этим кодом.

Упрощенный код шаблона:

{exp:safecracker channel="gta-attendee"}
<div class="form_row" style="display:none;">
<label class="small">Choose Meetup to Attend:<span class="required">*</span></label>
{embed="includes/_playa_select" selected="{attendee-event:child_ids}" }
</div>
{/exp:safecracker}  

встроенный код:

{exp:channel:entries dynamic="no" channel="gta-meetup" limit="1"}
<input value="{entry_id}" name="attendee-event[selections][]" type="hidden">
{/exp:channel:entries}

В коде я использую Playa Module, но принцип тот же. Надеюсь это поможет

Шон

person CreateSean    schedule 12.04.2012