Как преобразовать массив в контроллере в строку в представлениях в laravel - PullRequest
1 голос
/ 28 марта 2020

У меня есть контроллер, который передает данные массива для просмотра. Внутри представления я хотел использовать данные в виде строки в JSON формате объекта.

Вот мой контроллер:

class TestController extends Controller
{
  private $user;

  public function index()
  { 
    return view('app')->with([
        'userdata' => array('user' => 'John', 'age' => 20), 
        'access_token' => 'token_here'
    ]);
   }
}

Вот мое приложение представления. php

 <html>
 <-- more html codes--->
 <script>
  let userdata = "{{ $userdata }}"; // ERROR: htmlspecialchars() expects parameter 1 to be string, array given 
 </script>
 <-- more html codes--->
 </html>

Я попытался с помощью implode,

<script>
    let userdata = "{{ implode(' ', $userdata)";
    console.log(userdata);
</script>

Не было ошибки, но проблема в том, что получается:

{&quot;userdata&quot;:{&quotuser&quot .....}

Как я могу иметь правильный результат, подобный этому:

{'userdata': {'user':'john', 'age': 20}...} // this should be a string

Кто-нибудь знает?

Ответы [ 2 ]

2 голосов
/ 28 марта 2020

Вы можете использовать json_encode:

{!! json_encode($userdata) !!}

Заметьте, что вы должны использовать {!! !!}, чтобы получить желаемую строку. строки, помещенные в {{ }}, экранируются

Также вы можете использовать директиву лезвия пользователя @json. зависит от того, какую версию laravel вы используете:

@json($userdata)
1 голос
/ 28 марта 2020

Из Laravel блочные документы .

Рендеринг JSON

Иногда вы можете передать массив на ваше усмотрение с намерением рендеринга его как JSON для инициализации переменной JavaScript. Например:

<script>
    var app = <?php echo json_encode($array); ?>;
</script>

Однако вместо ручного вызова json_encode вы можете использовать директиву @ json Blade. Директива @ json принимает те же аргументы, что и функция json_encode PHP:

<script>
    var app = @json($array);

    var app = @json($array, JSON_PRETTY_PRINT);
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...