Неопределенная переменная в представлении - PullRequest
0 голосов
/ 16 июня 2019

Я столкнулся с проблемой неопределенной переменной в ошибке просмотра.Я уже искал решение, но никто не помог мне и не понял, в чем дело.

Я уже выполнил передачу данных в контроллер без проблем.Вот почему я не понимаю, почему это не работает.Я пытаюсь получить доступ к определенной theme на основе ссылки, по которой пользователь мог щелкнуть

. Вот код контроллера, где я передаю переменную $themeDetailed в представление

/**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        $themeDetailed = Theme::findOrFail($id);
        return view('accueil', ['themeDetailed' => $themeDetailed]);
    }

Код вида accueil blade-сервера

                        <!-- single course -->
                    @foreach ($themes as $thematique)
                        <div class="col-md-3 col-sm-6 col-xs-6">
                            <div class="course">
                                <a href=" {{ route('themes.show', $themeDetailed->id)}} " class="course-img">
                                    <img src="main/assets/img/course01.jpg" alt="">
                                    <i class="course-link-icon fa fa-link"></i>
                                </a>
                                <a class="course-title" href="#">{{$thematique->intitule }} </a>
                                <div class="course-details">
                                    <span class="course-category">{{$thematique->categorie }}</span>
                                    <span class="course-price course-free">{{$thematique->filiereDesiree }}</span>
                                </div>
                            </div>
                        </div>
                    @endforeach
                        <!-- /single course -->

Маршруты

        | GET|HEAD  | themes              |                | App\Http\Controllers\ThemeController@index            | web,auth     |
        | POST      | themes              | themes.store   | App\Http\Controllers\ThemeController@store            | web          |
        | GET|HEAD  | themes/create       | themes.create  | App\Http\Controllers\ThemeController@create           | web          |
        | GET|HEAD  | themes/{theme}      | themes.show    | App\Http\Controllers\ThemeController@show             | web          |
        | PUT|PATCH | themes/{theme}      | themes.update  | App\Http\Controllers\ThemeController@update           | web          |
        | DELETE    | themes/{theme}      | themes.destroy | App\Http\Controllers\ThemeController@destroy          | web          |
        | GET|HEAD  | themes/{theme}/edit | themes.edit    | App\Http\Controllers\ThemeController@edit             | web          |

Итак, вот ссылка в представлении blade-сервера, которая должна получить через контроллер конкретную тему:

<a href=" {{ route('themes.show', $themeDetailed->id)}} " class="course-img">
<img src="main/assets/img/course01.jpg" alt="">
<i class="course-link-icon fa fa-link"></i>
</a> 

Переменная themeDetailed определяется в контроллере и передается в представление.Я не очень понимаю, почему я все еще получаю это как неопределенную переменную. Должен ли я по-разному определять маршруты, ссылку?Я что-то там пропускаю? ..Спасибо за помощь

Ответы [ 4 ]

0 голосов
/ 16 июня 2019

Проблема в том, что вы передаете две переменные в представление, используя две функции контроллера, и это невозможно, так как при вызове маршрута страницы только одна из двух функций будет вызываться первой, а другая - так, чтобы функция контроллера маршрут не будет выполняться, и переменная будет неопределена

Вы можете просто отправить две переменные в представление с помощью одной функции:

public function accueil($id)
{ 
    $themes = Theme::inRandomOrder()->take(8)->get(); 
    $themeDetailed = Theme::findOrFail($id);

    return view('accueil', ['themes' => $themes , 'themeDetailed' => $themeDetailed]);
}
0 голосов
/ 16 июня 2019

Измените $id и укажите $theme в методе вашего контроллера.Хотя я не думаю, что это проблема.Ваше мнение явно не то, что должно быть.Вы передаете одну запись / коллекцию представлению, но в вашем коде представления есть цикл, который не подходит.

А что не определено?Какая переменная?

0 голосов
/ 16 июня 2019

Вы пытаетесь зациклить неправильную переменную в вашем представлении:

@foreach ($themes as $thematique)

Измените его так же, как вы возвращаете из контроллера.

Если Controller возвращает:

return view('accueil', ['themeDetailed' => $themeDetailed]);

В Просмотр вы должны использовать:

@foreach ($themeDetailed as $thematique)

Если контроллер возвращает:

return view('accueil', ['themes' => $themes]);

В View вы должны использовать:

@foreach ($themes as $thematique)
0 голосов
/ 16 июня 2019

Откуда $themes происходит?Возможно, неопределенной переменной является $themes. Убедитесь, что вы передали ее в accueil представление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...