محمد
2 سال پیش توسط محمد مطرح شد
17 پاسخ

به روزرسانی اتوماتیک دیتا در ویو لاراول

سلام خسته نباشید.
یه صفحه دارم که دیتا داخلش نمایش داده میشه و میخوام بصورت اتومامیک هر چند ثانیه بدون ریلود شدن صفحه اون بخش div به روز بشه.
از طریق این پرسش توی استک اوور تونستم این کارو انجام بدم ولی مشکلی که دارم این هستش که من توی حالت عادی از foreach بلید blade استفاده کردم و توش شرط گذاشتم. ولی توی پرسش استک حلقه برده توی جاوااسکریپت.
چه طوری بصورت کامل اون حلقه ای که نوشتم با اون حلقه ی جایگزاری کنم؟ چونکه حلقه ای که با خود blade نوشتم داخلش شرط گذاشتم و کلاس های مختلف واسه استایلش هم قرار داده شده.
ممنون میشم راهنمایی کنید.

@mhyeganeh @mhmdrezafk @sina.it91 @@ali.bayat


ثبت پرسش جدید
محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 2 سال پیش مطرح شد
0

سلام دوست عزیز
چون داری از blade استفاده میکنی و ارتباطات ajax نداری
خیلی راحت شما با استفاده از livewire میتونی این کار رو انجام بدی
دوره اموزشیش توی راکت هست و عالیه
اصلا بابتش نترس و نیازی نیست 100 درصدشو بفهمی در ابتدای کار
فقط نیازتو باهاش برطرف کن و باهاش بیشتر اشنا شو
ب شدت امکانات عالی ای داره
موفق باشی


حسین درویشی
تخصص : برنامه نویس لاراول
@iam.hossein 2 سال پیش مطرح شد
0

سلام
باید از جاوا اسکریپت استفاده کنید ، blade سمت سرور رندر میشه و به سمت کاربر ارسال میشه و بعد از ارسال نمتیونه داده ها رو تغییر بدید باهاش

باید با استفاده از جاوا اسکریپت این کار رو انجام بدید واگر لازم هست که اطلاعات از سمت سرور خوانده بشه باید api بنویسد یا در هر حال route شما در لاراول پاسخ json برگردونه تا بشه توی جاوا اسکریپت به راحتی ازش استفاده کرد.
توی این مسئله باید از ajax استفاده کنید
فکر کنم این پاسخ میتونه کمکتون کنه


محمد
تخصص : همیشه در حال یادگیری ...
@Mohammad79 2 سال پیش مطرح شد
0

در موردش کدش میتونید راهنمایی کنید.
ممنون


محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 2 سال پیش مطرح شد
0

سلام دوست عزیز
چون داری از blade استفاده میکنی و ارتباطات ajax نداری
خیلی راحت شما با استفاده از livewire میتونی این کار رو انجام بدی
دوره اموزشیش توی راکت هست و عالیه
اصلا بابتش نترس و نیازی نیست 100 درصدشو بفهمی در ابتدای کار
فقط نیازتو باهاش برطرف کن و باهاش بیشتر اشنا شو
ب شدت امکانات عالی ای داره
موفق باشی


محمد
تخصص : همیشه در حال یادگیری ...
@Mohammad79 2 سال پیش مطرح شد
0

            <script>
                $(document).ready(function() {
                    setInterval(function() {
                        $("#data").load(window.location.href + " #data");
                    }, 3000);
                });
            </script>

برای حلقه از دستورات blade استفاده نکردم (ولی خوب باز فایل blade دیگه!) و کد بالارو اضافه کردم الان به روز میشه ولی مشکلی داره این هستش که کل دیتا میپره!


محمد
تخصص : همیشه در حال یادگیری ...
@Mohammad79 2 سال پیش آپدیت شد
0

بنظرتون این لینک کارمنو راه میندازه؟
https://laravel-livewire.com/docs/2.x/polling

و یه چیز دیگه livewire توی پروژه اضافه کنم جاهای دیگه بهم نمیزه؟؟ الان کل کار با Blade هستش.
@salar.mohammad2013


محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 2 سال پیش مطرح شد
0

سلام
poll مثل interval دوره ای رفرش میکنه
نه هیچ مشکلی با بقیه پروژت نداره و کاملا راحتی میتونی توی یه بخش کوچیک پروژت بزاریش مثلا توی یک کامپوننت معمولی غیر لایو وایری
باید ببینی نیازت چیه
شاید شما بهتر باشه ajax بزنی مثلا و رفرش کنی
بسته به پروژه ی خودتونه


محمد
تخصص : همیشه در حال یادگیری ...
@Mohammad79 2 سال پیش مطرح شد
0

@salar.mohammad2013

  1. توی کنترلر اصلی blade ریترن میکنم.
  2. توی blade کد هامو گذاشتم و از طریق @livewire() اون کامپونتت ریترن میکنم.
  3. توی کلاس کامپونتت توی فاکنش render کوئری زدم و کلا کد زیر اجرا کردم.
    public function render()
    {
        $data = Data::orderBy('updated_at', 'ASC')->get();
        return view('livewire.show-data', compact($data));
    }
  4. توی قایل blade کامپوننت هم حلقه دیتا و کد های مربوط نوشتم. متاسفانه Invalid argument supplied for foreach() میده.
    چک کردم data کلا نال هستش!

محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 2 سال پیش مطرح شد
0

سلام داخل همین render یک dd از data بگیرید


رضا جهانگیر
تخصص : Full-Stack Developer
@rezajahangir 2 سال پیش مطرح شد
0

سلام به شما دوست عزیز.
اگه میخواین زمانی که دیتای جدید اضافه شد، بدون رفرش شدن صفحه دیتا جدید نمایش داده بشه باید از وب سوکت استفاده کنید.
موفق باشید.


محمد
تخصص : همیشه در حال یادگیری ...
@Mohammad79 2 سال پیش مطرح شد
0

اره dd گرفتم دیتارو میاره و اوکی هستش.


return view('livewire.show-data', compact($data));```

محمد
تخصص : همیشه در حال یادگیری ...
@Mohammad79 2 سال پیش مطرح شد
0

همون dd توی ویو کامپونتت میگریم نال میده.

@salar.mohammad2013


محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 2 سال پیش مطرح شد
0

compact رو به شیوه اشتباهی نوشتید عزیز
نام متغییر در رشته و بدون علامت دلار بزار
کد زیر

public function render()
{
    $data = Data::orderBy('updated_at', 'ASC')->get();
    return view('livewire.show-data', compact('data'));
}

محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 2 سال پیش مطرح شد
0

@rezajahangir
ایشون مشکلشون ریلود کردن داده هست
وب سوکت برای فهم این که چه زمانی نیاز به ارسال درخواست رفرش کردن داده داریم به کارشون میاد
فعلا در خود بروزرسانی داده بدون رفرش شدن صفحه مشکل دارن چون از ajax استفاده نمیکنن نیاز به livewire دارن.


محمد
تخصص : همیشه در حال یادگیری ...
@Mohammad79 2 سال پیش مطرح شد
0

خوب دستتون درد نکنه اون اوکی شد حالا دیتا میاد. و مشکل اصلی دیگه بصورت اتوماتیک لود نمیشه. اینو توی blade اصلی استفاده کردم.

<div wire:poll.750ms>
                @livewire('show-data')
</div>

محمد
تخصص : همیشه در حال یادگیری ...
@Mohammad79 2 سال پیش مطرح شد
0

اوکی شد مشکل از @livewireScripts بودش


محمد
تخصص : همیشه در حال یادگیری ...
@Mohammad79 2 سال پیش مطرح شد
0

چه طوری میشه اوتامیک بعد از اضافه شدن دیتا اسکرول بشه به پایین صفحه. مثلا شما یه باکس چت در نظر بگیر هر چه قدر پیام میاد اسکرول میره به پایین صفحه/


محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 2 سال پیش مطرح شد
0

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


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

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