【问题标题】:Is it possible to pass parameters to tinymce.init function using blade?是否可以使用刀片将参数传递给 tinymce.init 函数?
【发布时间】:2017-01-21 16:16:29
【问题描述】:

我想将基于数据库数据的默认内容添加到 tinymce 编辑器:

控制器:

@if(isset($page_content))
    @forelse ($page_content['getMediaItems'] as $index => $item)
        @include('scripts.tinymce.tinymce-multiple-init',compact('index'))
    @empty
        {{'Woops..'}}
    @endforelse
@else
    @include('scripts.tinymce.tinymce-single-init')
@endif

所以当有多个媒体项时,我想将默认文本添加到编辑器中

现在我想要包含页面上的 init 函数内的迭代(索引):

tinymce.init({
   setup:function(ed) {
      //Stuff here
   },
   selector: '.js-editable-media',
   menubar:false,
   inline: true,
   plugins: "textcolor colorpicker",
   toolbar: [
    'undo redo forecolor'
   ],
   my_custom_variable: {!! $index !!}
});

现在{!! $index !!} 只返回 0 而不是迭代次数。但是当我将索引参数放在函数之外时,它会返回正确的数字:

console.log({!! $index!!}); //showing correct iteration

tinymce.init({
  .....
  console.log({!! $index!!}); //showing only 0
});

请帮忙

【问题讨论】:

    标签: javascript php laravel tinymce blade


    【解决方案1】:

    $index 是一个键,这就是为什么它在第一次迭代中是0。如果要传值,应该传$item

    @include('scripts.tinymce.tinymce-multiple-init', compact('item'))
    

    然后:

    my_custom_variable: {!! $item !!}
    

    另外,在 JS 中硬编码 PHP 是一种不好的做法。考虑其他传递数据的方式。

    【讨论】:

    • 实际上我想要每个项目的迭代键而不是项目,现在它只返回 0,但是当我在 tinymce.init 函数之外的 console.log({!! $index !!})正在返回正确的数字:console.log({!! $index !!}); //显示正确的数字 tinymce.init({ ..... });
    • 很抱歉,我不明白你当时想要达到什么目的。请尝试解释您究竟想获得什么、什么数字以及您想在哪里获得这些信息。
    • 更新了我的问题希望你现在能更好地理解它
    • 也许问题是您尝试多次初始化tinymce,但它只初始化一次?如果是这种情况,您需要use different elements for each tinymce editor
    • 我想根据与forelse一起发送的对象添加默认内容。即使我将“索引”更改为“项目”,它仍然返回 4 倍相同的内容
    猜你喜欢
    • 2021-07-29
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多