Задать вопрос
@0ldn0mad

Как исправить ошибку Illegal string offset в Blade?

Добрый день.
Есть Контроллер, где в свойстве массивом лежат данные:
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;

class PostController extends Controller
{
	private $posts;
	public function __construct()
	{
		$this->posts = [
			1 => [
				'title'  => 'Тайтл страницы 1',
				'author' => 'Автор страницы 1',
				'date'   => 'Дата публикации страницы 1',
				'teaser' => 'Короткое описание страницы 1',
				'text'   => 'Полный текст страницы 1',
			],
			2 => [
				'title'  => 'Тайтл страницы 2',
				'author' => 'Автор страницы 2',
				'date'   => 'Дата публикации страницы 2',
				'teaser' => 'Короткое описание страницы 2',
				'text'   => 'Полный текст страницы 2',
			]
		];
	}
	public function showOne($num)
	{
		$arrData = $this->posts[$num];
		return view('posts', ['arrData' => $arrData]);
	}
}

И дочерний:
@extends('layouts.post_main')

@section('title')
    @foreach ($arrData as $arrTemp)
        {{ $arrTemp['title'] }}
    @endforeach
@stop

Первое, что хотел вывести - имя тайтла страницы из массива. Но при формировании страницы laravel выкидывает такую ошибку:
"Illegal string offset 'title' (View:.........
Как победить ее в таком случае?
  • Вопрос задан
  • 608 просмотров
Подписаться 1 Простой 8 комментариев
Пригласить эксперта
Ответы на вопрос 2
JhaoDa
@JhaoDa
LaravelRUS Team
Ктулху Всемогущий, ну что в голове у этих людей? Почему они пишут, не думая? Или не пишут, а копипастят?

Что делает $arrData = $this->posts[$num];? Извлекает элемент массива.

Что кажется в $arrData? Верно, там окажется:
[
    'title'  => 'Тайтл страницы 1',
    'author' => 'Автор страницы 1',
    'date'   => 'Дата публикации страницы 1',
    'teaser' => 'Короткое описание страницы 1',
    'text'   => 'Полный текст страницы 1',
]

Что будет в $arrTemp, если этот массив итерировать? Там будет СТРОКА. Дальше сам? Или всё ещё нет?
Ответ написан
Комментировать
@andreysuha
Что то знаю
$arrData[title] без форича. Внимательно смотрите в свой код и научитесь пользоваться var dump
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы