У меня есть этот компонент:
class CategorySelect extends Component
{
public $id_name, $selected;
public function __construct($selected=-1, $id_name = "default_id")
{
$this->id_name = $id_name;
$this->selected = $selected;
}
public function render()
{
return view('components.category-select', ['categories' => Category::all()]);
}
}
<select name = "{{ $id_name }}" id = "{{ $id_name }}">
@foreach ($categories as $c)
@php
$s = $c->id == $selected ? 'selected=selected' : '';
@endphp
<option {{ $s }} value = "{{ $c->id }}">{{ $c->title }}</option>
@endforeach
</select>
Я использую это так:
<x-category-select selected = "old('category_id', $article->category_id)"
id_name = "category_id"></x-category-select>
$selected передается и работает, но $id_name остается в своем значении по умолчанию из конструктора.
изменение на :id_name = "category_id" не удается с Undefined constant "category_id"
Как правильно это сделать без @props() (по этой причине, среди прочего, я использую компоненты на основе классов, а не анонимные компоненты ..)?






Если кто-то наткнется на это в будущем - проблема была в соглашении об именах. когда имена переменных изменились на camelCase - заработало.
$id_name сменилось на $idName и заработало