简体   繁体   中英

How to foreach output XML data as string in blade view?

I am trying to build a webapp in Laravel, I am facing issue with looping through my XML data, when I try to output the xml data as {{$caller}} everything is fine but it just shows the first data, now I want to loop trough with a @foreach but I cant get it working. It displays nothing.

this is my XML (I am getting my data from the attributes)

<transport>
  <events2>
    <unasigned_event Code="81006" StartDate="2022-01-06T00:40:34.760" Customer="Directo" Content="Sveiki, Sanita! Pielikām atskaiti Fiziskām personām izmaksātās summas, tā ir tāda pati kā NIS, tikai atlase ierakstiem ir nevis pēc piegādātāja klases (=FOR), bet pēc piegādātāja kartiņas lauka Tips (=privāts). Paskatieties lūdzu, vai ar šo pietiek, vai varbūt jāliek vēl kāds atlases filtrs klāt vai vēl kāda informācija jāpievieno? Ar cieņu Marija Ovsjaņikova Klientu atbalsts support@directo.lv<mailto:support@directo.lv>, +371 677 044 91 [Logo Description automatically generate..." Subject="RE: Pārskats par nerezidentiem izmaksātajām summām/fiziskām personām izmaksātās summas"/>
  </events2>
</transport>

This is my controller

class ReadXMLController extends Controller
{
    public function read_xml()
    {
        #Function for parsing XML and displaying the 'xml' view

        $url = "samplesite.com/xml";
        $xml = simplexml_load_file($url);

        $z =  $xml['code'];

        if(empty($z)){
        $cUnasigned = ( $xml->events2->unasigned_event->count() );
        $cUnasigned_prev = ( $xml->events2->unasigned_event_prev->count() );
        $incall = ( $xml->events2->call_totals['incall'] );
        $outcall = ( $xml->events2->call_totals['outcall'] );
        $missedIn = ( $xml->events2->call_totals['missedIn'] );
        $missedOut = ( $xml->events2->call_totals['missedOut'] );
        $MasterToday = ( $xml->events2->call_totals['masterTicketsToday'] );
        $MasterTodayUnasigned = ( $xml->events2->call_totals['masterTicketsTodayUnasigned'] );
        $MasterTodayDone = ( $xml->events2->call_totals['masterTicketsTodayDone'] );
        $MasterTodayUndone = ( $xml->events2->call_totals['masterTicketsTodayUnDone'] );
        $MasterThisWeek = ( $xml->events2->call_totals['masterTicketsThisWeek'] );
        $MasterThisWeekUnasigned = ( $xml->events2->call_totals['masterTicketsThisWeekUnasigned'] );
        $MasterThisWeekDone = ( $xml->events2->call_totals['masterTicketsThisWeekDoneDone'] );
        $MasterThisWeekUndone = ( $xml->events2->call_totals['masterTicketsThisWeekUnDone'] );
        $caller = ($xml->events2->in_call_top['caller']);
        }
        return view('xml',
            compact(
            'url',
            'xml',
            'z',
            'cUnasigned',
            'cUnasigned_prev',
            'incall',
            'outcall',
            'missedIn',
            'missedOut',
            'MasterToday',
            'MasterTodayUnasigned',
            'MasterTodayDone',
            'MasterTodayUndone',
            'MasterThisWeek',
            'MasterThisWeekUnasigned',
            'MasterThisWeekDone',
            'MasterThisWeekUndone',
            'caller'
            ));
    }        
    public function index(){
            return view('xml');
        }
}

and this my blade view

@extends('layouts.app')

    @section('content')
    <h1>Sekcija</h1>
        {{$cUnasigned}}
    
    @foreach ($caller as $call)
        {{$call}}   
    @endforeach
    
    @endsection

Thanks for your help in advance!

@section('content')
<h1>Sekcija</h1>
    {{$customer}}
<table>
    <tr>
        @foreach ($unasigned_events as $event)
        <td>

{{ $event->attributes()->Customer }}
<br>

</td>
@endforeach
</tr>
</table>
@endsection

This is how I end up doing it

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM