Ошибка в привязке данных javascript в laravel blade : "имя" не определено
у меня есть ajax-код для поиска на keyup, который отображает курсы, у меня есть 2 таблицы курсы и категории и две модели для них курс и категория у них есть отношения один ко многим.
в коде JS, когда я пытаюсь найти название курса и диспалировать курс с именем категории, используя ${course.category.name} это дает мне курс.категория не определена и все div исчезает, когда я удаляю эту часть "${course.category.name}" из кода следует, что поиск работает нормально, но наверняка там нет названия категории. ps: php-часть работает нормально.
вот в чем проблема
<a href="{{url('/courses/category')}}/${course.category_id}" class="btn_4"> ${course.category.name} </a>
Что я уже пробовал:
//курсы blade
//this is the laravel part <div class="row" id="allcourses"> @foreach($courses as $course) <div class="col-sm-6 col-lg-4 mb-4"> <div class="single_special_cource"> <img src="{{asset($course->img)}}" class="special_img" alt=""> <div class="special_cource_text"> <a href="{{route('course.category',$course->category_id)}}" class="btn_4">{{$course->category->name}}</a> <h4>${{$course->price}}</h4> <a href="{{route('course.details',$course->id)}}"><h3>{{$course->name}}</h3></a> <p>{{substr($course->desc, 0, 200)}}</p> </div> </div> </div> @endforeach </div> </div> </section> <!--::blog_part end::--> @endsection //here is the ajax part @section('script') <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script> <script> $('#keyword').keyup(function(){ let keyword = $(this).val(); var url="{{ route('course.search') }}" + "?keyword=" + keyword; console.log(url); $.ajax({ url:url, type: "GET", contentType: false, processData: false, success:function(data) { console.log(data); $('#allcourses').empty(); for (course of data) { $('#allcourses').append(` <div class="col-sm-6 col-lg-4 mb-4"> <div class="single_special_cource"> <img src="{{asset('${course.img}')}}" class="special_img" alt=""> <div class="special_cource_text"> //here is the problem <a href="{{url('/courses/category')}}/${course.category_id}" class="btn_4"> ${course.category.name} </a> <h4>$ ${course.price}</h4> <a href="{{url('/courses/details')}}/${course.id}"><h3>${course.name}</h3></a> <p>${course.desc.substring( 0, 200)}</p> </div> </div> </div> `); } } }); }); </script> @endsection
//Маршрут
Route::get('/courses','CourseController@list')->name('course.list');
Контроллер>>
class CourseController extends Controller { //All Courses function list(){ $courses=Course::get(); return view('front.courses.courses',[ 'courses'=>$courses ]); } }
//Модельный
//category class Category extends Model { // public function courses() { return $this->hasMany('App\Course'); } } //Course class Course extends Model { // public function category() { return $this->belongsTo('App\Category'); } }
Sandeep Mewara
Вам нужно поделиться кодом, который заполняет курс и имеет его структуру.
Member 12214576
я обновил код.
он отлично работает в коде laravel и я могу получить название категории как вы видите в Блейде выше но только в javascript не работает
Sandeep Mewara
Но, основываясь на ошибке, категория в основном нулевая, Я думаю.
Member 12214576
ладно ,я постараюсь это выяснить, спасибо
Sandeep Mewara
Итак, я не знал, что такое Ларавель. Погуглил его. Может быть, вам нужно ссылаться на переменную как:
${{course.category.name}}
т. е.: используйте {{ }}
Member 12214576
к сожалению не работает, что еще более сбивает с толку, что я видел код для ajax поиска такой же, как и у меня, и работает нормально, и я пытался скопировать его в свой код, но не получилось! так что я не знаю, где именно проблема, и я попросил кого-то заглянуть в мой код, и он не мог понять, в чем проблема, поэтому я спросил здесь.
и спасибо Вам за то, что вы искали и пытались помочь.