سلام خدمت دوستان
بنده یه سوال تخصصی داشتم با نمونه کد اگه ذکر بشه ممنون میشم از همگی.
تو فروشگاه فیلتر کردن اطلاعات از طریق متد پست با اجاکس در لاراول قیمت و بقیه اطلاعات رو به کنترلر ارسال می کنیم و بعدش از طریق زیر اطلاعات رو بر می گردونیم.
$product = DB::table('products')
->where('reg_price','>=',$_POST["minimum_price"])
->where('reg_price','<=',$_POST["maximum_price"])
->get()->toArray();
return response()->json([$product]);
حالا اطلاعات بر می گرده به همون قسمت که شامل محصولات میشه یعنی محصولاتی که اون این رنج قیمتی هستند بر می گردن که شامل قیمت و نام و بقیه اطلاعات محصول میشه.
چطور از اطلاعات برگشتی استفاده کنیم یعنی چطور می تونیم محصولات رو به صورت اجاکس دوباره تو صفحه نمایش بدیم.
foreach ($product as $key => $Products)
{
$Filter_Products = '<div id="productList" class="col-lg-4 col-md-6 product_ajax">
{
کد بالا رو ببینید البته قسمت محصولات که کد html هستش ر کامل نذاشتم. تو شیوه بالا به صورت اجاکس اطلاعات بر می گرده و تو سایتم نمایش میدم اما فقط با اینکه حلقه foreach هستش فقط 1 دونه محصول رو بر می گردونه و البته کامل و صحیح بر می گردونه اما یه دونه یعنی انگار حلقه رو اولین ارسال توقف پیدا می کنه .
لطفا اگه منظورم رو رسوندم ممنون میشم توضیح رو با کد بهم بدید.
سلام
اول این که لطفا کد رو توی تگ کد از همین ویرایشگر قرار بده ک بشه خوندش
دوم اینکه چون داری ajax میزنی دیگه نمیتونی با php بیایی حلقه بزنی
اون برای زمانی هست که با لاراول متغییر رو به اون صفحه ارسال کنی و وقتی صفحه باز میشه و یا رفرش میشه
هنگام بار گذاری صفحه حلقه اجرا میشه و فقط یکبار اجرا میشه ب صورت کامل و بعد لود شدن صفحه دیگه شما کد php کار نداری
برای حل مشکل که منم این چالش رو داشتم که باید چیکار کنم وقتی میخوام از ajax استفاده کنم
اینه ک بیایی داده هاتو ، داخل خود کنترلر به صورت کامل توی یک ارایه بریزی و بفرستیش توی ajax خود product که بر میگردونی شامل همه ی محصولات هست
اونو به ارایه تبدیل کن بفرستش ب ajax در جواب ajax بیا با جاوا اسکریپت حلقه بزن
نمونه میفرستم ببین
کد داخل کنترلر هست که به صورت آرایه دسته بندی هارو ارسال کردم
public function get_all()
{
$categories=Category::all();
return $categories->toArray();
}
و در انتها هم داخل ajax
//------------------ START Get Products For Select Box START ---------------------
var global_categories={};
fill_products_selectBox()
function fill_products_selectBox(){
$.ajax({
type:'GET',
url:'/categories/all',
success:function (data){
var options='';
for(var index in data){
global_categories[data[index].id]=data[index].name;
options+='<option value="'+data[index].id+'">'+data[index].name+'</option>';
}
$('#category_select_box').html(options);
$("#category_select_box").selectpicker("refresh");
}
})
}
//------------------ END Get Products For Select Box END -------------------------
اگر روابطی هم داشته باشی مجبوری اون داده ها رو توی آرایه کنی در کنارش بعد ارسال کنی
مثل این
public function get_all()
{
$products=Product::all();
foreach ($products as $product){
$product['category']=$product->categories->toArray();
$product['parents']=$product->parents->toArray();
}
return $products->toArray();
}
در کل برای لاراول livewire هست که استفاده میشه به جای ajax که توی سایت اموزشش هست
ولی خب من با ajax انجام دادم ب همین شیوه ک توضیح دادم
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟