مهدی
8 ماه پیش توسط مهدی مطرح شد
11 پاسخ

خواندن دیتا json در blade

یک سری api دارم که داخل کنترولر گرفتمشون و انتقالشون دادم به view به صورت json الان میخوام تک تک دیتای این فایل جیسون رو داخل تیبل نمایش بدم چجوری باید این کار رو انجام بدم؟ تصویر کد کنترولر
@mahdi.nazari @ossvahid @FullStack


ثبت پرسش جدید
میکائیل
تخصص : برنامه نویسی سمت سرور و کلاینت
@FullStack 8 ماه پیش مطرح شد
0

سلام وقت بخیر
وقتی که به صورت ارایه به view ارسال کردید اونجا میتونید با foreach خیلی راحت دیتا هارو داخل تیبل بریزید و به اندازه دیتا تکرار بشه داخل foreach باید دیتا هایی رو که قراره تکرار بشه قرار بدید برای مثال

@foreach($responses as $response)
    <p>This is your name{{ $response->name}}</p>
@endforeach

میتونید به جای تگ <p> بیاید و جدول مورد نظرتون رو پیاده کنید که به تععداد پست ها تکرار بشه


مهدی
@mahdi2005 8 ماه پیش مطرح شد
0

این کار رو انجام دادم ولی با این ارور مواجه شدم تصویر

@FullStack @mahdi.nazari @Farzadameri @abolfazlzarei


میکائیل
تخصص : برنامه نویسی سمت سرور و کلاینت
@FullStack 8 ماه پیش مطرح شد
0

ببینید اول توی کنترولر از response یه dd بگیر و اسکرین بده تا دیتا رو ببینم و بهت بگم چیکار کنی که اررور نده


مهدی
@mahdi2005 8 ماه پیش مطرح شد
مهدی نظری
تخصص : توسعه دهنده Front End
@mahdi.nazari 8 ماه پیش مطرح شد
0

سلام دوست من 🖐
امیدوارم حالت خوب و عالی باشی✨

برای نمایش داده‌های JSON در جدول HTML در ویو لاراول، می‌توانی از حلقه foreach بر روی آرایه داده‌ها استفاده کنی و اطلاعات را در جدول قرار بدی . در اینجا یک نمونه کد میارم برات که ببینی چطوری توی کنترلر خودت داده‌هات رو از API دریافت و به ویو ارسال کنی

public function viewindex()
{
    $url = 'https://jsonplaceholder.typicode.com/posts';
    $response = file_get_contents($url);
    $data = json_decode($response, true); // تبدیل داده‌های JSON به آرایه‌ای از آرایه‌ها یا اشیاء stdClass

    return view('event', compact('data'));
}

بعد ، در ویو (event.blade.php یا نام دیگری که انتخاب کردی) از حلقه foreach برای نمایش داده‌ها در جدول استفاده کن

html

<table>
    <thead>
        <tr>
            <th>ID</th>
            <th>Title</th>
            <th>Body</th>
        </tr>
    </thead>
    <tbody>
        @foreach ($data as $item)
        <tr>
            <td>{{ $item['id'] }}</td>
            <td>{{ $item['title'] }}</td>
            <td>{{ $item['body'] }}</td>
        </tr>
        @endforeach
    </tbody>
</table>

توی این مثال، فرض شده که داده‌ها شامل مواردی مانند id، title و body هستن تو میتونی این کد را با توجه به ساختار دقیق داده‌ها و نیازهای خودت تغییر بدی

این روش نمایش داده‌ها در جدول در صورتی کار می‌کنه که داده‌ها به صورت آرایه از آرایه‌ها یا آرایه از اشیاء stdClass باشن. در صورت استفاده از ساختار دیگه ای برای داده‌ها، نیاز به تغییرات در کدت داری

امیدوارم پاسخم بهت کمک کرده باشه ❤️
موفق و پیروز باشی 🤘🌹


مهدی
@mahdi2005 8 ماه پیش مطرح شد
0

ممنونم با این کد اوکی شد ولی با یک api جدید این ارور رو دریافت میکنم تصویر

@FullStack @mahdi.nazari @


مهدی نظری
تخصص : توسعه دهنده Front End
@mahdi.nazari 8 ماه پیش مطرح شد
0

با توجه به پیام خطا که ارائه دادی، به نظر می‌رسه که مشکل در تفسیر داده‌های JSON و دسترسی به اونها توی ویو وجود داره . بهتره اول دقیق‌تر کدت رو بررسی کنی چک کنی که داده‌ها به درستی به ویو منتقل شدن و مشکلی در پردازش آنها وجود نداره

اطلاعات JSON به ویو: ابتدا مطمئن شو که داده‌ها به درستی از کنترلر به ویو انتقال داده میشن. برای اینکه مطمئن بشی ، می‌توان داده‌ها رو توی کنترلر قبل از ارسال به ویو با dd($response) یا var_dump($response) پرینت کنی ببینی درسته یا نه .

تجزیه و تحلیل داده‌های JSON: بعد از اینکه مطمئن شدی از درستی انتقال داده‌ها، اطمینان حاصل کن که داده‌ها به درستی تجزیه و تحلیل می‌شن . از آنجایی که داده‌ها احتمالاً به صورت یک رشته JSON از API دریافت می‌شن ، قبل از استفاده از آنها باید آنها را به آرایه یا شیء تبدیل کنی

php

$data = json_decode($response, true);

استفاده از حلقه foreach توی ویو: در ویو خودت (event.blade.php) از یک حلقه foreach روی داده‌ها استفاده کن تا اونها رو در جدول نمایش بدی . مطمئن شو که ساختار داده‌های JSON و مواردی مثل اسم ورودی‌هات درست باشند. مثال:

<table>
    <thead>
        <tr>
            <th>ID</th>
            <th>Title</th>
            <th>Body</th>
        </tr>
    </thead>
    <tbody>
        @foreach ($data as $item)
        <tr>
            <td>{{ $item['id'] }}</td>
            <td>{{ $item['title'] }}</td>
            <td>{{ $item['body'] }}</td>
        </tr>
        @endforeach
    </tbody>
</table>

مهدی
@mahdi2005 8 ماه پیش آپدیت شد
0

dd هم که میگیرم دیتا رو نشون میده داخل کنترولر و دیتا به درستی ارسال میشه به ویو ولی api که من دارم به صورت تو در تو هست خروجی بگیرید متوجه میشید

@FullStack @mahdi.nazari


مهدی نظری
تخصص : توسعه دهنده Front End
@mahdi.nazari 8 ماه پیش مطرح شد
0

مهدی این واقعا راه حلش مشخصه دیگه

اگر داده‌های JSON که از API دریافت می‌کنی به صورت تو در تو (nested) هستن، می‌بایست در ویو از حلقه‌های تو در تو استفاده کنی تا به داده‌های داخلی دسترسی داشته باشی . به طور کلی، با استفاده از دستورات foreach در ویو، می‌تونیبه تمام سطوح داده‌های تو در تو دسترسی پیدا کنی.

در ویو میتونی اینطوری به داده هات دسترسی پیدا کنی

<table>
    <thead>
        <tr>
            <th>ID</th>
            <th>Title</th>
            <th>Body</th>
            <th>Comments</th>
        </tr>
    </thead>
    <tbody>
        @foreach ($data as $item)
        <tr>
            <td>{{ $item['id'] }}</td>
            <td>{{ $item['title'] }}</td>
            <td>{{ $item['body'] }}</td>
            <td>
                <ul>
                    @foreach ($item['comments'] as $comment)
                    <li>{{ $comment['text'] }}</li>
                    @endforeach
                </ul>
            </td>
        </tr>
        @endforeach
    </tbody>
</table>

در این مثال، از یک حلقه دیگه foreach درون حلقه اصلی برای نمایش داده‌های داخلی (نظیر نظرات) استفاده شده. می‌توانید ساختار حلقه‌ها و نحوه نمایش داده‌ها را با توجه به ساختار دقیق داده‌های خود تنظیم کن


مهدی
@mahdi2005 8 ماه پیش مطرح شد
1

بله متوجه هستم ولی این اروری که گفتم بازم روبرو میشم
@mahdi.nazari


میکائیل
تخصص : برنامه نویسی سمت سرور و کلاینت
@FullStack 8 ماه پیش مطرح شد
0

دوست عزیز داده ای که گرفتید رو تبدیل کردید به ارایه مشکل حل شد این ارروری که میگیری برای نوع داده ای هست که به ارایه دادید میگه ولیویی که به ارایه دادید تایپش بولین کد های بلید رو بده اونجا اشتباه داشتی تا راهنمایی کنیم کجای کد مشکل داره و تایپش رو درست کنی و اینکه معذرت من یکی دوروزی نبودم که جواب بدم


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام