اريد جلب جميع ال subcategory المتعلقة ب category محدد ولكن هذا لم ينجح
استخدم هذا الكود في صفحة الانشاء
@extends('theme.default')
@section('content')
<divclass="container"><h2>Add Transaction</h2><formaction="{{ route('admin.transactions.store') }}"method="POST">
@csrf
<!-- Category Dropdown --><divclass="mb-3"><labelfor="category"class="form-label">Select Category</label><selectid="category"name="category_id"class="form-select"required><optionvalue=""disabledselected>Select a category</option>
@foreach ($categories as $category)
<optionvalue="{{ $category->id }}">{{ $category->name }}</option>
@endforeach
</select></div><!-- Subcategory Dropdown --><divclass="mb-3"><labelfor="subcategory"class="form-label">Select Subcategory</label><selectid="subcategory"name="subcategory_id"class="form-select"requireddisabled><optionvalue=""disabledselected>Select a subcategory</option></select></div><!-- Date Field --><divclass="mb-3"><labelfor="date"class="form-label">Transaction Date</label><inputtype="date"id="date"name="date"class="form-control"value="{{ \Carbon\Carbon::now()->format('Y-m-d') }}" required>
</div><!-- Name and Price --><divclass="mb-3"><labelfor="name"class="form-label">Subcategory Name</label><inputtype="text"id="name"name="name"class="form-control"readonly></div><divclass="mb-3"><labelfor="price"class="form-label">Price</label><inputtype="text"id="price"name="price"class="form-control"readonly></div><buttontype="submit"class="btn btn-primary">Add Transaction</button></form></div><script>// عند اختيار category، سيتم تحميل الـ subcategories
document.getElementById('category').addEventListener('change',function(){const categoryId =this.value;const subcategorySelect = document.getElementById('subcategory');// تعطيل زر الـ subcategory أثناء تحميل البيانات
subcategorySelect.disabled =true;
subcategorySelect.innerHTML ='<option value="" disabled selected>Loading...</option>';
fetch(`/admin/subcategories/${categoryId}`).then(response => response.json()).then(data =>{
subcategorySelect.innerHTML ='<option value="" disabled selected>Select a subcategory</option>';// إعادة تمكين الـ subcategory واستخدام البيانات التي تم تحميلها
data.subcategories.forEach(subcategory =>{const option = document.createElement('option');
option.value = subcategory.id;
option.setAttribute('data-name', subcategory.name);
option.setAttribute('data-price', subcategory.price);
option.textContent =`${subcategory.name}- $${subcategory.price}`;
subcategorySelect.appendChild(option);});
subcategorySelect.disabled =false;}).catch(error => console.error('Error loading subcategories:', error));});// عند اختيار subcategory، سيتم ملء الـ name و price تلقائيًا
document.getElementById('subcategory').addEventListener('change',function(){const selectedOption =this.options[this.selectedIndex];const name = selectedOption.getAttribute('data-name');const price = selectedOption.getAttribute('data-price');// تحديث الحقول الخاصة بالاسم والسعر
document.getElementById('name').value = name;
document.getElementById('price').value ='$'+ price;});</script>
@endsection
وهذا في ال controller
publicfunction create(){
$categories =Category::all();return view('admin.transactions.create', compact('categories'));}/**
* Store a newly created transaction in storage.
*/publicfunction store(Request $request){
$this->validate($request,['name'=>'required','amount'=>'required|numeric','category_id'=>'required','date'=>'required|date',]);
$transaction =newTransaction;
$transaction->name = $request->name;
$transaction->amount = $request->amount;
$transaction->category_id = $request->category_id;
$transaction->date = $request->date;// حفظ الـ transaction
$transaction->save();// إعادة التوجيه مع رسالة نجاحreturn redirect()->route('transactions.index')->with('success','Transaction added successfully!');}
وهذا في ملف ال web
//accounting// ضمن المجموعة الخاصة بالـ AdminRoute::prefix('admin')->name('admin.')->group(function(){// مسار لعرض جميع المعاملاتRoute::get('transactions',[TransactionController::class,'index'])->name('transactions.index');// مسار لعرض صفحة إضافة معاملة جديدةRoute::get('transactions/create',[TransactionController::class,'create'])->name('transactions.create');// مسار لحفظ المعاملة الجديدةRoute::post('transactions',[TransactionController::class,'store'])->name('transactions.store');// مسار لجلب الأصناف الفرعية بناءً على الـ categoryRoute::get('subcategories/{category_id}',function($category_id){
$subcategories =SubCategory::where('category_id', $category_id)->get();return response()->json(['subcategories'=> $subcategories]);});});
مع العلم ان العلاقات بين الجاول مربوطة بطريقة صحيحة وكل شيء على ما يرام
وللاضافة يظهر هذا الخطأ في الكونسول
create:258 Error loading subcategories: SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
ما الحل في هذه الحالة ؟؟؟ وهل هناك اصلا طريقة اسهل ممكن ان احصل بها على ذات النتيجة ؟؟؟؟
عند اختيار ال category تصبح القائمة الخاصة بال subcategory هكذا مكتوب عليها loading
السؤال
ريماس الياس
اريد جلب جميع ال subcategory المتعلقة ب category محدد ولكن هذا لم ينجح
استخدم هذا الكود في صفحة الانشاء
وهذا في ال controller
وهذا في ملف ال web
مع العلم ان العلاقات بين الجاول مربوطة بطريقة صحيحة وكل شيء على ما يرام
وللاضافة يظهر هذا الخطأ في الكونسول
ما الحل في هذه الحالة ؟؟؟ وهل هناك اصلا طريقة اسهل ممكن ان احصل بها على ذات النتيجة ؟؟؟؟
عند اختيار ال category تصبح القائمة الخاصة بال subcategory هكذا مكتوب عليها loading
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.