Получение идентификатора из потока в цикле для использования в форме редактирования пирохм
Я использую Pyrocms с модулем потоков, чтобы просмотреть содержимое
{{ streams:gallery}}
<div class="col-lg-3 col-md-4 col-sm-4">
<a href="#">
<div class="ratio" style="background:url({{gallery_images:image}})"></div>
</a>
<div class="text-center">
<h5>{{title}}</h5>
</div>
</div>
<!-- FORM CODE BELOW WILL GO HERE USING THE GALLERY STREAM -->
{{ /streams:gallery }}
Я хотел бы получить идентификатор текущего зацикленного элемента, а затем использовать его в виде потока для редактирования содержимого. Вот так
{{ if user:logged_in }}
{{ streams:form stream="gallery" mode="edit" edit_id="1" include="page_image|deschtml"}}
{{ form_open }}
<span class="click-to-edit">
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span> Edit
</span>
<span class="inline-edit">
{{ error }}
{{ page_image:input }}
{{ deschtml:input }}
{{ form_submit }}
<button class="inline-close pull-right" type="button">Cancel</button>
</span>
{{ form_close }}
{{ /streams:form }}
{{ endif }}
Я хочу иметь возможность получить значение идентификатора и передать его в
edit_id="ID-VALUE-HERE"
Я подумал, что это может сработать
edit_id="{{id}}"
но синтаксический анализатор lex разрывается внутри потока, который находится внутри потока.
Я не уверен, возможно ли получить значения из потока для использования в дочернем потоке. Есть ли способ как-то этого добиться? Спасибо
РЕДАКТИРОВАТЬ
Относительно этой проблемы и использования [segments]
Это работает полностью с использованием сегментов URL в качестве идентификатора, который передается. Например
{{ streams:form stream="custom_details" mode="edit" edit_id="[segment_3]" include="page_image|deschtml"}}
где [segment_3]
в моем случае это идентификатор элемента потока. Который потрясающий. Однако, как в коде для исходного примера, он не будет работать с использованием потоков id
или же {{ id }}
1 ответ
{{ streams:form stream="custom_details" mode="edit" edit_id=id include="page_image|deschtml" }}
должно сработать.
См. Документацию по тегам PyroCMS - Использование тегов и переменных в параметрах тегов для получения дополнительной информации.
Обычно вы можете опустить фигурные скобки, если используете переменную в качестве параметра тега или вызов плагина без каких-либо параметров.
// Обновить
Вот пример реализации для использования собственного плагина для обхода проблем с вызовами вложенных тегов:
создайте новый плагин в addons/shared_addons/plugin с именем "customplugin.php"
код:
<?php defined('BASEPATH') OR exit('No direct script access allowed');
class Plugin_Customplugin extends Plugin {
public function galeryform()
{
$id = $this->attribute('galeryid', false);
if( ! $id ) {
return;
}
return $this->theme_view('partials/galery_form', array('galeryid' => $id), true);
}
создайте папку "partials" в папке вашей темы и добавьте "galery_form.html", которая содержит разметку для вашей потоковой формы:
{{ streams:form stream="custom_details" mode="edit" edit_id=galeryid include="page_image|deschtml"}}
[ ... and the rest of your markup ... ]
замените код формы в вашей галерее / представлении вызовом плагина:
{{ customplugin:galeryform galery_id=id }}
Конечно, вы можете изменить имя плагина, просто убедитесь, что имя класса совпадает с префиксом filename + 'Plugin_', и соответственно измените вызов плагина.
Почти всегда проще работать с пользовательскими плагинами, чем с вложенными тегами lex.