Member 12214576 Ответов: 0

Ошибка в привязке данных 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 поиска такой же, как и у меня, и работает нормально, и я пытался скопировать его в свой код, но не получилось! так что я не знаю, где именно проблема, и я попросил кого-то заглянуть в мой код, и он не мог понять, в чем проблема, поэтому я спросил здесь.
и спасибо Вам за то, что вы искали и пытались помочь.

0 Ответов