#javascript #php #laravel
#javascript #php #laravel
Вопрос:
я купил последнюю ContentBuilder.js от innovastudio. Я интегрировал его в свою CMS и работает нормально. Теперь, когда я создал новые статические блоки, это тоже работает нормально. Но теперь я пытаюсь создавать динамические блоки с данными php, передаваемыми с контроллера при загрузке страницы, но, похоже, не могу заставить это работать. Я знаю, что php загружается раньше javascript .Но я немного застрял.
Кто-нибудь уже работал с contentbuilder.js и не мог бы кто-нибудь, пожалуйста, подсказать мне, как решить эту проблему, пожалуйста?
Я работаю в laravel 5.8, я получил элементbyid с помощью javascript и заменил значение на динамическое значение . Это работает, но только для отдельных строк, а не для коллекций.-
<script type="text/javascript">
jQuery(document).ready(function ($) {
var DBaddress = '{{$settings[0]['address']}}';
var DBnumber = '{{$settings[0]['number']}}';
var DBpostalcode = '{{$settings[0]['postal_code']}}';
var DBtown = '{{$settings[0]['town']}}';
var DBtel = '{{$settings[0]['telephone']}}';
var DBemail = '{{$settings[0]['email']}}';
var obj = $.contentbuilder({
container: '.container_edit',
imageselect: 'admin/laravel-filemanager',
cellFormat: '<div class="col-md-12"></div>',
rowFormat: '<div class="row"></div>',
framework: 'bootstrap',
});
$('#btnViewSnippets').on('click', function () {
obj.viewSnippets();
});
$('#btnViewHtml').on('click', function () {
obj.viewHtml();
});
/*$('#btnSave').on('click', function () {
save(obj.html());
});*/
document.getElementById("address").innerHTML= DBaddress;
document.getElementById("number").innerHTML= DBnumber;
document.getElementById("postalcode").innerHTML= DBpostalcode;
document.getElementById("town").innerHTML= DBtown;
document.getElementById("tel").innerHTML= DBtel;
document.getElementById("email").innerHTML= DBemail;
});
</script>
Здесь находится раздел, в котором задается конструктор страниц :
@section('content')
<div class="container_edit">
{!! $page->contentBuilder !!}
</div>
@if( basename(url()->current()) !== $page->slug)
<div class="is-tool" style="position:fixed;width:210px;height:50px;border:none;top:250px;bottom:50px;left:auto;right:30px;text-align:right;display:block">
<button id="btnViewSnippets" class="classic" style="width:70px;height:50px;"> Add</button>
<button id="btnViewHtml" class="classic" style="width:70px;height:50px;">HTML</button>
<button id="btnSave" data-id="{{$editPageDetails[0]->uuid}}" class="classic" style="width:70px;height:50px;">SAVE</button>
</div>
@endif
@endsection
Вот как мне удалось заставить это работать, но опять же это для отдельных строк. Я хотел бы иметь полную коллекцию, чтобы я мог создавать динамические блоки
Комментарии:
1. можете ли вы показать свой html?
2. html генерируется в contentbuilder. /* Video */ { ‘thumbnail’: ‘preview/element-video.png’, ‘category’: ‘120’, ‘html’: ‘<div class=»embed-responsive embed-responsive-16by9″>’ ‘<iframe width=»560″ height=»315″ src=»//www.youtube.com/embed/P5yHEKqx86U?rel=0 «frameborder=»0″ allowfullscreen=»»></iframe>’ ‘</div>’ }, Как только я создам страницу с помощью конструктора содержимого и сохраню ее. HTML (макет) сохраняется в базе данных. И извлекаются на самой странице. Проблема не в html, а в том, как передать php в js
3. для каких блоков вы должны выполнять цикл?
4. скопировать блок не получается? Позвольте мне объяснить. Например, мне нужно зациклить этот блок: Изображение слева, текст справа, для каждой статьи в базе данных он должен принимать изображение строки базы данных, а также описание. Теперь, когда я пытаюсь это сделать, он просто показывает мою переменную (потому что javascript загружается после php)
5. @MohammedYassineCHABLI это contentbuilder, который я использую innovastudio.com/content-builder.aspx я знаю, что это трудно объяснить. Но главное, я хочу, чтобы мои php-переменные были в блоках, чтобы они были динамичными, и мне не нужно было редактировать их после установки страницы