htmlspecialchars () ожидает, что параметр 1 будет строкой, а массив задан как уровень 5.8 - PullRequest
0 голосов
/ 21 мая 2019

Я хочу показать категорию и paent_id. но я пытался, но у меня ничего не получилось.

category.blade.php

<div class="form-group">
    <label for="parent_id">Category</label>
    <select class="form-control" id="parent_id" name="parent_id">
        <option value="">{{ $categories }}</option>
    </select>
</div>

CategoryController.php

public function create()
{
    $categories = Category::getCatList();
    return view('Admin.categories.create', compact('categories'));
}

category.php

protected $fillable = ['name', 'parent_id'];

public static function getCatList ()
{
    $array = array();
    $array[0] = 'Main Category';
    $category = self::with('getChild')->where('parent_id', 0)->get();
    foreach ($category as $key => $value) {
        $array[$value->id] = $value->name;
    }
    return $array;
}

public function getChild ()
{
    return $this->hasMany(Category::class, 'parent_id', 'id');
}

Я вижу эту ошибку ...

htmlspecialchars () ожидает, что параметр 1 будет строкой, задан массив (представление: C: \ xampp \ htdocs \ new \ shopping \ resources \ views \ Admin \ Categories \ create.blade.php)

1 Ответ

0 голосов
/ 21 мая 2019

Прежде всего, вы не можете использовать массив в .blade без цикла, поэтому {{ $categories }} недопустимо.Используйте цикл:

@foreach($categories AS $category)
  <option value ...>
@endforeach

Далее вам нужно передать что-то, чтобы использовать значение, и что-то, чтобы использовать в качестве метки.Теперь они у вас есть, вы просто передаете $value->name, рефакторинг:

$categories = self::with('getChild')->where('parent_id', 0)->get();
foreach ($categories as $category) {
    $array[$category->id] = $category;
}

Затем, по вашему мнению, вы можете получить доступ к $category->id и $category->name в каждом из ваших option> s:

@foreach($categories AS $category)
  <option value="{{ $category->id }}">{{ $category->name }}</option>
@endforeach

Ранее, вы могли бы сделать это так: (если вы сохраните свой код как $array[$value->id] = $value->name;)

@foreach($categories AS $id => $name)
  <option value="{{ $id }}">{{ $name }}</option>
@endforeach

В любом случае все в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...