Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 23.12.2019 23:40:15

Laravel 6. Не работают конструкции {{ }} в include представлениях

Подскажите, пожалуйста, в чем может быть дело.

Подключаю  Blade-представление вот так:
@include('partials.form_element', ['genres' => 'sfd'])

Сам файл partials/form_element.blade.php подключается. Текст весь выводится.
Но, все что в фигурных скобках - так и выводится. Т.е. выводятся и сами фигурные скобки.

Т.е. вижу на странице вот это:

{{ $genres }}

Или вот это:

{{ time() }}

Т.е. функция time() не сработала. А просто вывелась в фигурных скобках.

Если же делаю так:

<?php
echo $genres;
?>

То работает.

При чем у родительского шаблона все работает.

Не в сети

#2 24.12.2019 09:33:48

Re: Laravel 6. Не работают конструкции {{ }} в include представлениях

А вы можете показать весь form_element.blade.php?

Не в сети

#3 24.12.2019 10:06:04

Re: Laravel 6. Не работают конструкции {{ }} в include представлениях

Да, без проблем. Но сам шаблон еще не доделан:

<form>
    <div class="form-group">
        <label for="nameInput">Название</label>
        <input type="email" class="form-control" id="nameInput" aria-describedby="nameHelp" placeholder="Название произведения">
        <small id="emailHelp" class="form-text text-muted">Желатеьно коротко и ёмко.</small>
    </div>
    <div class="form-group">
        <label for="elements_string">Ваша первая строка</label>
        <input type="text" class="form-control" id="elements_string" name="elements_string" placeholder="Начнем, пожалуй!">
    </div>
    <div class="form-group">
        <label class="form-check-label" for="genres">Жанр</label>
        <select name="genre">
            <option>-- жанр --</option>

            @foreach ($genres as $genre){
                <option> {{ $genre->name }}  </option>
            @endforeach

        </select>

    </div>
    <button type="submit" class="btn btn-primary">Записать</button>
</form>

Такой должен быть код. Здесь не работает:  {{ $genre->name }} .
И @foreach тоже не работает. Но, @foreach не выводится. Просто не срабатывает.
А {{ $genre->name }} - прям так и выводится. И любые другие переменные, которые я пробую тоже так выводятся.

Не в сети

#4 24.12.2019 10:09:53

Re: Laravel 6. Не работают конструкции {{ }} в include представлениях

Навскидку, в строке

@foreach ($genres as $genre){

уберите последнюю скобку — её не должно там быть.

Не в сети

#5 24.12.2019 10:36:49

Re: Laravel 6. Не работают конструкции {{ }} в include представлениях

Убрал. Не помогло (
Ну, и вообще шаблон привел вот к такому виду:

<div>
    {{ time() }}
</div>

Выводится, просто:
{{ time() }}

Не в сети

#6 24.12.2019 11:23:02

Re: Laravel 6. Не работают конструкции {{ }} в include представлениях

В том виде, как вы описываете

@include('partials.form_element', ['genres' => 'sfd'])

partials/form_element.blade.php

{{ $genres }}

всё должно работать. Ошибка где-то в другом месте.

Не в сети

#7 24.12.2019 15:10:17

Re: Laravel 6. Не работают конструкции {{ }} в include представлениях

@barmaley я думаю ты накосячил с расширением файла.

Blade может подключать через @include() как form_element.blade.php так и form_element.php, но конечно если это просто .php файл, то он НЕ будет обрабатываться как шаблон. Поэтому {{ time() }} выводится по правилам PHP: как простой текст.


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#8 24.12.2019 17:22:51

Re: Laravel 6. Не работают конструкции {{ }} в include представлениях

artoodetoo

Точно! Не указал в файле .blade.
Файл переименовал и все заработало.
Спасибо!

Не в сети

Подвал раздела