не может найти конкретный mov ie в списке vue и laravel - PullRequest
0 голосов
/ 20 февраля 2020

Я пытаюсь получить сведения о конкретном mov ie в списке фильмов, но он не может получить конкретный идентификатор.

вот мой Vue компонент:

<template>
    <div>
        <el-row :gutter="10">
            <el-col :span="6" v-for="movie in movies" v-bind:key="movie">
                <el-card shadow="always" :body-style="{ padding: '0px'} ">
                    <img v-bind:src="movie.cover_photo" class="image">
                    <div style="padding: 14px;">
                        <div class="bottom clearfix">
                            <a href="#" @click="showMovie(movie.id)">{{movie.title}}</a>
                            <h4>{{ movie.year }}</h4>
                            <h4>{{ movie.type }}</h4>

                        </div>
                        <div class="block">

                            <el-rate v-model="value1" :max="10"></el-rate>
                        </div>
                    </div>
                </el-card>
            </el-col>

        </el-row>

    </div>
</template>

<script>
    import axios from 'axios'

    export default {
        data() {
            return {
                movies: [],
                movie: {
                    id: '',
                }

            };
        },
        created() {
            this.fetchMovieList();
        },
        methods: {
            fetchMovieList() {
                axios.get('/movies').then(response => {
                    this.movies = response.data;
                })

                    .catch(error => console.log(error))

            },
            showMovie(id) {
                axios.get('/movies/' + id).then((res) => {

                    if (res.data.status == true) {
                        this.movie = res.data.movie;
                        console.log(res.data.movie)
                    } else {
                        alert('No Movie founded with this id')
                    }
                }).catch((err) => {
                    alert('error')
                })
            }
        }
    }
</script>

<style scoped>
    .image {
        width: 100%;
        display: block;
    }
</style>

мой метод показа:



     public function show($id)
    {
    $movie=Movie::find($id);
    if($movie){
    return response()->json(['status'=>true,'movie'=>$movie]);
    }else{
    return response()->json(['status'=>false]);
    }
    }

и мой маршрут:

Route::get('/movies/{id}', 'MoviesController@show');

Невозможно найти mov ie с определенным идентификатором. Что может быть не так? Когда я захожу по URL-адресу API прямо в браузере и непосредственно набираю маршрут, я получаю нужный мне mov ie.

1 Ответ

0 голосов
/ 20 февраля 2020

Не уверен, что это решит все ваши проблемы, но вы можете попробовать следующее:

Route::get('/movies/{movie}', 'MoviesController@show');
public function show(Movie $movie)
{
    return view('details', ['movie' => $movie]);
}

Кроме того, соглашение об именах для контроллеров должно использовать имя модели в единственном числе. Поэтому ваш контроллер должен иметь имя MovieController без s.

Еще одна вещь, в компоненте вашего представления вы должны включить movie_id в URL, иначе Laravel не сможет узнать, какой mov ie вы Пытаюсь получить:

...
axios.get('/movies/1')
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...