⏳ افزایش قیمت‌ | آخرین فرصت خرید دوره‌های برنامه‌نویسی با قیمت سال قبل با => ۶۵٪ تخفیف

مشاهده دوره‌ها
محمدرضا فلکی
4 سال پیش توسط محمدرضا فلکی مطرح شد
31 پاسخ

دلیل ارور Undefined variable

سلام دوستان
تعجم از اینه که من این variable رو تعریف کردم پس چرا ارور میده!

$customers = Customer::all();
        foreach ($customers as $customer) {
            foreach ($customer->mobileNumbers() as $mobileNumber) {
               $mobile_number = $mobileNumber->mobile_number;
            }
        }
        return response()->json($customers, $mobile_number);

چون دارم از api استفاده میکنم نمیتونستم به سادگی توی لاراول بگم که شماره موبایل های این مشتری رو بده
چون پروژه هامم توی یه پوشه یا روی یه سرور نیستن برا همین سخت شده.

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


ثبت پرسش جدید
محمدرضا فلکی
تخصص : Learning Laravel
@m.reza6920 4 سال پیش مطرح شد
0

درود
خیلی خیلی ممنون @fakhraddin
یعنی به این صورت میشه؟ برای mobile number هم همینطوری باید کد زده بشه؟

if (data.customers && data.customers.length > 0) {
    var tbody = '';
    $.each(data.customers, function(key, value) {
    tbody += '<tr>';
        tbody += '<td>' + value.id + '</td>';
        tbody += '<td>' + value.name + '</td>';
        tbody += '<td>' + value.email + '</td>';
        tbody += '<td>' + value.created_at + '</td>';
        tbody += '<td><a href="/admin-panel/admins/edit/' + value.id +
                '"><button class="btn btn-info"><span class="symbol-input100"><i class="fa fa-edit"
                            aria-hidden="true"></i></span></button></a> <button data-id="' +
                value.id +
                '" class="btn delete btn-danger"><span class="symbol-input100"><i class="fa fa-remove"
                        aria-hidden="true"></i></span></button></td>';
        tbody += '</tr>';
    });
    $('tbody').append(tbody);
}

فقط من اصلا نمیفهمم چرا باز undefined میده شاید تو درست کردن جدول اشتباه دارم.


فخرالدین لنگی
تخصص : برنامه نویس وب، آندروید و سیست...
@fakhraddin 4 سال پیش آپدیت شد
1

@m.reza6920
برای mobile_numbers هم می تونید با همین سناریو پیش برید
برای اینکه متوجه بشید واقع مقدار درست برگشت داده می شه توی حلقه each مقدار value رو توی console.log نمایش بدید ببینید چه مقداری براتون برمی گردونه


محمدرضا فلکی
تخصص : Learning Laravel
@m.reza6920 4 سال پیش مطرح شد
0

سلام مجدد @fakhraddin @SobhanDadkhah
آيا نمیشه بجای کردن اون کار همین کد رو توی فرانت بزنم؟
بجای این کد توی بکند‍

foreach ($customers as $customer) {
    foreach ($customer->mobileNumbers() as $mobileNumber) {
        $mobileNumber->mobile_number;
    }
}

این کد رو بزنم

$.each(data, function(key, value) {
    $.each(value.mobileNumbers(), function(key, value) {
        tbody += '<td>' + value.mobile_number + '</td>';
    });
});

البته با این روش توی jquery ارور میده و تابع ()mobileNumbers رو نمیشناسه!


فخرالدین لنگی
تخصص : برنامه نویس وب، آندروید و سیست...
@fakhraddin 4 سال پیش مطرح شد
1

@m.reza6920
شما می تونید توی بلید های لاراول حتی توی قسمت اسکریپت ها هم از کدای لاراول و php مثل حلقه ها و ... استفاده کنید اما من به شخصه توصیه نمی کنم به دو دلیل زیر:

  1. پیچیدگی زیاد و بی نظمی در کد
  2. اگه به این کار عادت کنید باعث می شه شما از ساختار های استاندارد دور بشید و وقتی از فریمورک های فرانت اند استفاده می کنید اونجا گیر کنید و و دوباره مجبور هستید با چیزی که عادت کردید رو ترک کنید
    در هر صورت من به هیچ عنوان توصیه نمی کنم ولی اگر با توضیحاتی که دادم بازم نیاز داشتید که توی اسکریپتتون از کداهای php یا لاراولی استفاده کنید می تونم براتون کد رو اصلاح کنم

محمدرضا فلکی
تخصص : Learning Laravel
@m.reza6920 4 سال پیش آپدیت شد
0

یعنی شما میگید که فرستادن شماره موبایل ها از بکند در این شرایط استاندارد تر یا راحت تره؟ @fakhraddin
آخه موقعی که از api استفاده نمیکردم و فرانتند و بکندم روی یه سرور و پروژه بودن خیلی راحت این کارو توی بلید انجام میدادم.

الان ولی نه چون باید از توی بکند data رو بفرستم و توی فرانتند دریافت کنم و بعدشم باید یه foreach دیگه هم
جدا از customers بزنم و اون td ها میوفته پایین row خودش و یک شلختگی توی ظاهر فرانتند به وجود میاد و چون نمیدونم چجور یه کدی رو از بکند بگیرم و درست و قشنگ نمایش بدم گفتم شاید از توی فرانتند راحت تر باشه

مثلا قسمت pagination رو راحت انجام میدادم ولی الان منبعی رو پیدا نمیکنم که این موضوع رو در حالتی توضیح داده باشه که دو تا پروژه روی دو تا سرور داریم و اینا از هم جدان و
کلا مشکل سرچ کردن هم برام ایجاد شده چون نمیدونم چجوری با این وضعیتی که توی کدام هست چی دقیقا باید سرچ کنم


فخرالدین لنگی
تخصص : برنامه نویس وب، آندروید و سیست...
@fakhraddin 4 سال پیش مطرح شد
1

@m.reza6920
منظور بنده این بود که خودتون رو عادت به جداسازی بخش ها و ماژولار نویسی بکنید که الآن تقریبا تبدیل شده به یک استاندارد در دنیای برنامه نویسی معنای این صحبتم رو وقتی بیشتر بحش می رسید که بخوایید از فریمورک های دیگه بک اند و فرانت اند استفاده کنید مخصوصا الآن که لاراول دیگه این تاکیدشون رو نسخه 7 به بعد بیشتر کرده
اما برسیم به سراغ کدهای شما توی عمل و بنا به تجربه خودم می گم که میل بر خودبینی نشه اگه همه چیز رعایت شده باشه شما چه کدها رو مستقیم از کنترلر بفرستید توی ویو و چه به صورت api ارسال کنید خروجی کار برای یوزر باید یک چیز باشه فقط مسیر رسیدن بهشون متفاوت می شه اما خروجی و چیزی که می بیند نباید تغییری توش باشه
بحث pagination هم بازم همون سناریو یکی دوست داره با همون تابع render لاراول کار رو پیش می بره اما بعضیا می یان این سناریو از پایه شخصی سازی می کنن با دستور جاوا اسکریپت یا بیلد لاراول اینجام بازم همون سناریو بالا پیش می یاد فقط روش رسیدن متفاوته اما خروجی به یک شکله
کلا مسائلی که فرمودید اکثر دوستان جامعه برنامه نویس باهاش برخورد داشتن حالا با تمرین و ممارست و همیاری باقی جامعه برنامه نویسا تونستن مشکل رو رفع کنن
بنده یک توصیه می کنم در صورت امکان پروژه اتون به همراه بک آپ دیتابیس رو روی گیت بذارید که بتونیم یک فورک ازش بگیریم تا توی مشکلاتتون بتونید کمک بیشتری بهتون بکنیم
در آخر هم توصیه می کنم روی بحث api نویسی و جاوااسکریپت تمرکز زیادی بکنید تا بتونید توی این موارد api، paginate، search و .... بیشتر کمک حالتون باشه


محمدرضا فلکی
تخصص : Learning Laravel
@m.reza6920 4 سال پیش مطرح شد
0

درود مجدد
خیلی خیلی ممنون از توضیحاتتون آقای @fakhraddin
کد های فرانتند گیت هاب
کد های بکند گیت هاب

بک آپ دیتابیس هم توی پروژه بکند هست
🙏🙏🙏🙏


فخرالدین لنگی
تخصص : برنامه نویس وب، آندروید و سیست...
@fakhraddin 4 سال پیش مطرح شد
1

@m.reza6920
با سلام و وقت بخیر تشکر بابت آپلود پروژه ها روی گیت
دوست گرامی بنده چندتا توصیه، سوال و جواب جهت رفع مشکل برنامه اتون دارم و پیشاپیش بابت طولانی شدنش عذرخواهی می کنم
سوال:

  1. قالب بک اند رو خودتون دیزاین کردید یا از جایی تهیه شده ؟
    جواب جهت رفع مشکل برنامه اتون :
    تعداد ستون های جدولتون 8 تا ست اما توی درخواستی که می فرستید و جوابی که می گیرید شما 6 ستون رو پر می کنید و همین باعث بهم ریختگی کد می شه  تصویر
    توصیه ها: (امیدوارم باعث جسارت نشه فقط این موارد از این دیدگاه می گم که زودتر از شما کدنوسی رو شروع کردم)
  2. لطفا ابتدای امر به مفاهیم HTML, CSS, JS مسلط تر بشید
  3. قالبی که استفاده کردید حالا یا خودتون دیزاین کردید یا شخص دیگه ایی طراحی کرده خوشبختانه زیباست اما شوربختانه اون اصول پایه ایی لازم برای یک طراحی شسته رفته و منسجم حتی سبکی، رسپانسیو بودن و ... لحاظ نشده برای نمونه پلاگین سوییت آرت فکر کنم چهار پنج بار فقط فایل های asset فراخونی می شه در ضمن قالب ساختار بلیدی لاراول هم آنچنان بهینه نیست yeild های مختلف توصیه می کنم آموزش های رایگان آقای موسوی برای لاراول رو یک بار مرور کنید
  4. برنامه نویس صرف فقط کدزدن پشت سر هم نیست

محمدرضا فلکی
تخصص : Learning Laravel
@m.reza6920 4 سال پیش مطرح شد
0

سلام خدمتتون آقای @fakhraddin
خیلی خیلی ممنونم.
کد های بکند رو که خودم نوشتم اما قالب فرانتند رو از اینجا دانلود کردم.

بله ۶ تا ستون رو پر میکنه اون دوتا ستون هم گذاشتم برای موقعی که تونستم شماره موبایل ها و سفارش هارو درست کنم.


فخرالدین لنگی
تخصص : برنامه نویس وب، آندروید و سیست...
@fakhraddin 4 سال پیش مطرح شد
1

@m.reza6920
خواهش می کنم دوست گرامی
نکته اول هم در مورد بلید های لاراول بگم خدمتتون شما لازم نیست تمام استایل و اسکریپت ها رو یکجا توی بلید مستر قرار بدید بلکه می تونید یک @stack بذارید و هر صفحه ایی که نیاز به استایل یا اسکریپت خاصی داره با دستور @push به بلید اصلی اضافه کنید نمونه اش مثلا چارت ها یا کتابخونه جدول جی کوئری شما قاعدتا توی همه صفحات به استایل و اسکریپت چارت نیاز ندارید این کار باعث دو مزیت مهم می شه اولا لود سریع صفحات و مدیریت خطاها می شه دوم ماژولار شدن بیشتر کداتون اونجوری دستتون باز می شه که هر ماژولی خواستید تغییر بدید فقط توی بخش های محدودتری لازمه تغییرات ایجد کنید
نکته دوم در مورد yield بلید اصلی شما لازم نیست برای هر صفحه خاصی بیایید یک yield جدا تعریف کنید چون قالب و استایل کلی یکیه کافیه از یک yield برای کانتنت استفاده کنید مگر اینکه هدف خاصی داشته باشید که من متوجهش نشدم
نکته سوم در مورد قالب هم عرض کردم قالب واقعا زیباست اما حالا یا توی مراحل انتقال به لاراول قسمت ها تا این حد بهم ریخته یا در کل قالب یک مشکل حادی داره
نکته چهارم آیا از جداسازی این دو پروژه هدف خاصی دارید؟ چون هر پروژه لاراولی به صورت تکی هم بخش api و پروژه حتی روت هاشم جداست و توی پروژه ایی در اندازه پروژه شما من به شخصه دلیلی برای انقدر تفکیک بخش ها نمی بینم مگر اینکه هدف خاصی پشتش دارید


محمدرضا فلکی
تخصص : Learning Laravel
@m.reza6920 4 سال پیش مطرح شد
1

بابت توضیحاتتون ممنونم @fakhraddin
جدا کردن پروژه ها بخاطر اینه که اگر بعدا خواستم پروژه رو تغییر بدم مثلا اندروید یا یه چیز دیگه ای اون موقع دیگه پروژه هام جدان و راحت میشه با هر دم و دستگاهی از طریق api اطلاعات رو رد و بدل کرد.
البته نمیدونم این کارم درسته یا نه ولی اگر اونطوری که شما میگید بود شاید مسایلی مثل pagination خیلی راحت تر اجرا میشدن.

البته اقای @hosseinshirinegad98 توی pagination کمک کردن و من فهمیدم چجوری از بکند اون طوری که تو ذهنم بود بفرستم به فرانت فقط پیاده سازیش تو فرانت رو مشکل داشتم.

در کل خیلی ممنونم من این نکاتی که گفتید رو اعمال میکنم ببینم چی میشه.


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

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