【问题标题】:How to pass object in views in laravel如何在laravel的视图中传递对象
【发布时间】:2016-11-29 02:33:45
【问题描述】:

我有一组 html 代码,它们在 views 中的 foreach statement 中调用,我正在尝试推送 array of object 以通过 controller 获取视图。

以下是我的控制器代码:

public function get_template($id)
{
    $template = Template::findOrFail($id);
    $getplugin = json_decode($template->templatedata);
    $plugins = Plugin::all();
    $userid = $template->user->id;
    return view('nitseditor.test', ['plugins' => $plugins, 'template'=> $template, 'getplugin' => $getplugin, 'userid' => $userid]);
}

在我的观点中,我这样称呼:

@foreach($getplugin as $renderer)

   @include('themes.' . $template->theme->name . '.Plugins.' . $plugins->find($renderer)->type . '.' . $plugins->find($renderer)->id, ['content' => $plugins->find($renderer)->userplugins()->whereUserId($userid)->first()->pivot->contents])

@endforeach
正在生成

视图HTML代码

<div id="slideshow">
   <div class="revolution-slider">
     <ul>
        <!-- SLIDE  -->
        @foreach($content->slider as $sliders)
           <li data-transition="{{ $sliders->transition }}" data-slotamount="{{ $sliders->slotamount }}" data-masterspeed="{{ $sliders->masterspeed }}">
              <!-- MAIN IMAGE -->
              <img src="{{ URL::asset($sliders->url) }}" alt="">
           </li>
        @endforeach
     </ul>
  </div>
</div>

现在我得到一个错误

试图获取非对象的属性(查看:C:\wamp\www\NitsEditor\resources\views\themes\Miracle\Plugins\Slider\2.blade.php)(查看:C:\wamp\www \NitsEditor\resources\views\themes\Miracle\Plugins\Slider\2.blade.php)

在执行diedump 时,foreach loop 中的以下代码:

foreach ($getplugin as $item){

        $plugincontents[] = Plugin::findOrFail($item)->userplugins()->whereUserId($userid)->first()->pivot->contents;

}
dd($plugincontents);

我能够得到JSON output,它保存了该特定视图的信息。如下所示:

array:2 [▼
  0 => "{"slider": [{"url": "img/home/bg.jpg", "slotamount": "7", "transition": "zoomin", "masterspeed": "1500"}, {"url": "img/home/bg2.jpg", "slotamount": "7", "transition": "zoomout", "masterspeed": "1500"}, {"url": "img/home/LOMEg.png", "slotamount": "7", "transition": "slidedown", "masterspeed": "1500"}]}"
  1 => "{"logo": {"logolink": "index.html", "logoimage": "img/home/nitseditorlogo.png"}, "pages": [{"pagelink": "index.html", "pagename": "Mysite"}, {"pagelink": "templates.html", "pagename": "Templates"}, {"pagelink": "aboutus.html", "pagename": "About Us"}, {"pagelink": "contactus.html", "pagename": "Contact Us"}]}"
]

请帮帮我。谢谢。

【问题讨论】:

    标签: laravel eloquent laravel-5.2 blade laravel-blade


    【解决方案1】:

    好吧,在进行交叉检查时,我知道我需要在视图中的数据中使用 json_decode。我试过了,结果,

    在我的视图中,我对数组做了json_decode,如下所示:

    @foreach($getplugin as $renderer)
    
        @include('themes.' . $template->theme->name . '.Plugins.' . $plugins->find($renderer)->type . '.' . $plugins->find($renderer)->id, ['contents' => json_decode($plugins->find($renderer)->userplugins()->whereUserId($userid)->first()->pivot->contents)])
    
    @endforeach
    

    最终得到想要的结果。

    【讨论】:

      【解决方案2】:

      $getplugin = json_decode($template-&gt;templatedata,true);代替$getplugin = json_decode($template-&gt;templatedata);

      【讨论】:

      • 如果您将true 添加到json_decode,您可能需要在foreach 循环中访问您的变量,例如$sliders['transition'],因为它不再是一个PHP 对象。
      • @DavidAngel :感谢您的指导。你们帮助我得到了答案。
      猜你喜欢
      • 1970-01-01
      • 2018-07-05
      • 2018-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多