Laravel collect ($ array) -> sortBy ($ value) -> values ​​() отображается на экране - PullRequest
1 голос
/ 19 июня 2020

У меня небольшая проблема с сортировкой массива в соответствии со значением, используя Laravel, я преобразовал его в коллекцию с:

$array = collect($array)

Затем я отсортировал это с:

$array = collect($array)->sortBy($sortingValue)

Результатом является коллекция, поэтому следующим шагом было вернуть мои данные в виде массива:

$array = collect($array)->sortBy($sortingValue)->values()

Затем я написал этот код между точками с запятой потому что он вложен в код html, поэтому получилось что-то вроде этого:

{{$array = collect($array)->sortBy($sortingValue)->values()}}

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

Есть идеи, откуда это? Я почти уверен, что это из-за вложенного кода, но я не понял, как скрыть этот текст со своей страницы и использовать результаты только для остальной части моего проекта.

Спасибо.

1 Ответ

2 голосов
/ 19 июня 2020

Использование {{ }} для присвоения переменной не является правильным подходом, поскольку это сокращение для echo ввода (печати) кода в ваше представление. Если вы хотите назначить переменную в файле .blade.php, используйте директиву @php или необработанные теги PHP:

@php $array = collect($array)->sortBy($sortingValue)->values(); @endphp
<?php $array = collect($array)->sortBy($sortingValue)->values(); ?>

Затем, позже в вашем коде, вы можете сделать:

@foreach($array as $record){
  {{ $record->id }}
  ...
@endforeach

(или любое другое действительное свойство)

...