У меня есть таблица базы данных под названием «Рецепты» и столбец в этой таблице под названием «ингредиенты». Ингредиенты поступают из HTML-ввода в браузере. Я прошу пользователя разделить каждый ингредиент, нажимая клавишу ввода и переходя к следующему ряду. Проблема, с которой я сталкиваюсь, заключается в том, что когда я возвращаю эти данные на странице show.blade.php, они возвращаются как одна длинная строка. Я не смог понять, как вернуть его в виде списка.
Пример:
Я получаю «овсяное молоко, бананы, кленовый сироп с корицей» в той части моего веб-сайта, где я вызываю данные об ингредиентах.
я хочу получить
Я использую 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 -->
Привет, @RossWilson, да, я вижу разрывы строк, когда я dd($recipe->ingredients); Я добавил код для своих show.blade.php и create.blade.php. У Вас есть какие-то предложения? Я очень ценю это!






$string = 'apple banana cinemon pokemon';
$arr = explode(' ', $string);
array_walk($arr, function (&$item, $key) {
$item = $key+1 . '.) ' . $item;
});
$output = implode("\n", $arr);
Что-то вроде этого? Сначала я разбиваю строку на отдельные слова. Затем я изменяю элементы в формате, который вы просили. И затем я объединяю элементы в строку.
Обновлено: список теперь начинается с 1
Привет! Спасибо за ответ! Как мне включить эту логику в мой контроллер? Если мне нужен доступ к $output в файле блейда? :) Еще раз спасибо, очень ценю идеи!
Когда вы
dd($recipe->ingredients);видите разрывы строк (например,\n) в тексте? Можете ли вы также добавить код для вашего блейд-файла в свой вопрос, пожалуйста?