Как получить список элементов из строки базы данных и вернуть список в Laravel?

У меня есть таблица базы данных под названием «Рецепты» и столбец в этой таблице под названием «ингредиенты». Ингредиенты поступают из HTML-ввода в браузере. Я прошу пользователя разделить каждый ингредиент, нажимая клавишу ввода и переходя к следующему ряду. Проблема, с которой я сталкиваюсь, заключается в том, что когда я возвращаю эти данные на странице show.blade.php, они возвращаются как одна длинная строка. Я не смог понять, как вернуть его в виде списка.

Пример:

Я получаю «овсяное молоко, бананы, кленовый сироп с корицей» в той части моего веб-сайта, где я вызываю данные об ингредиентах.

я хочу получить

  1. Овес
  2. Молоко
  3. Бананы
  4. Корица
  5. кленовый сироп

Я использую Laravel 5.7 для сборки приложения и вызываю {{$recipe->ingredients}}. Немного возился с функцией PHPexplore(), но безуспешно. Я не очень опытен, поэтому я уверен, что решить эту проблему несложно, я просто не могу ничего найти в Интернете. Может я не так формулирую вопрос?

Код моего файла create.blade.php:

 <div class = "createRecipeBody"> 
            <fieldset>
                <small class = "errorMessage">{{ $errors->first('title') }}</small>
                <label for = "title">Give your creation a title</label>
                <input type = "text" name = "title" id = "title">
            </fieldset>

            <fieldset>
                <small class = "errorMessage">{{ $errors->first('description') }}</small>
                <label for = "description">Describe your creation</label>
                <textarea name = "description" id = "description"></textarea>
            </fieldset>

            <fieldset>
                <small class = "errorMessage">{{ $errors->first('ingredients') }}</small>
                <label for = "ingredientList">List the ingredients</label>
                <textarea name = "ingredients" id = "ingredientList" placeholder = "Please list each ingredient on a seperate line"></textarea>
            </fieldset>

            <fieldset>
                    <small class = "errorMessage">{{ $errors->first('directions') }}</small>
                    <label for = "ingredientList">Directions</label>
                    <textarea name = "directions" id = "directions" placeholder = "Please list each step on a seperate line"></textarea>
            </fieldset>

            <div class = "terms">
                <label class = "authenticationCheck">
                    <input class = "termsOfService" type = "checkbox">
                    <span>
                        Public Recipe
                    </span>
                </label>

                <label class = "authenticationCheck">
                    <input class = "termsOfService" type = "checkbox">
                    <span>Private Recipe</span>
                </label>
            </div>
            <button class = "submitRecipe" type = "submit">Share your creation</button>
        </div>
    </section>

А это для моего show.blade.php:

<h2>Ingredients</h2>
                <span class = "ingredients">
                    <span class = "ingredientItem firstItem">
                    <span><i class = "far fa-clock"></i> {{$recipe->prepTime}}</span>
                    </span>

                    <span class = "ingredientItem">
                    <span><i class = "fas fa-concierge-bell"></i> {{$recipe->servings}}</span>
                    </span>

                    <span class = "ingredientItem">
                    <span><i class = "fas fa-weight"></i> {{$recipe->calories}}</span>
                    </span>
                </span>
                <hr>
                <p>Here's what you will need...</p>
                    <div>
                        <ol>
                            <li> {{$recipe->ingredients}}</li>
                        </ol>
                    </div>

                    <br>
                <h2>Directions</h2>
                <hr>
                <p>{{$recipe->directions}}</p>

                <h2>Chef's Tip</h2>
                <hr>
                <p>This feature is not yet enabled</p>
            </div><!-- col-sm-6 -->

Когда вы dd($recipe->ingredients); видите разрывы строк (например, \n) в тексте? Можете ли вы также добавить код для вашего блейд-файла в свой вопрос, пожалуйста?

Rwd 10.03.2019 09:57

Привет, @RossWilson, да, я вижу разрывы строк, когда я dd($recipe->ingredients); Я добавил код для своих show.blade.php и create.blade.php. У Вас есть какие-то предложения? Я очень ценю это!

carlstrom96 10.03.2019 23:11
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
411
1

Ответы 1

$string = 'apple banana cinemon pokemon';
$arr = explode(' ', $string);
array_walk($arr, function (&$item, $key) {
    $item = $key+1 . '.) ' . $item;
});
$output = implode("\n", $arr);

Что-то вроде этого? Сначала я разбиваю строку на отдельные слова. Затем я изменяю элементы в формате, который вы просили. И затем я объединяю элементы в строку.

Обновлено: список теперь начинается с 1

Привет! Спасибо за ответ! Как мне включить эту логику в мой контроллер? Если мне нужен доступ к $output в файле блейда? :) Еще раз спасибо, очень ценю идеи!

carlstrom96 10.03.2019 23:15

Другие вопросы по теме