laravel-livewire-tables: [Bug]: The component class constructor doesn't seem to run when using ComponentColumn
What happened?
We’re trying to use a Blade component as a column:
ComponentColumn::make('Fine Content', 'fine_weight_ozt')
->component('weight-with-conversions')
->attributes(fn ($value, $row, Column $column) => [
'weight' => new Weight($row->weighing_unit_type, $row->fine_weight),
]),
This does cause livewire-tables to attempt to render the component view, but it throws an “Undefined variable” exception because the public properties that are set in the constructor aren’t present.
I don’t believe the problem is in the component, because it works without issue when called in a view:
@php
$weight = new App\Data\Weight(1, 1)
@endphp
<x-weight-with-conversions :weight="$weight" />
So perhaps the constructor is not firing?
Here’s the component class and view:
...
class WeightWithConversions extends Component
{
public Weight $weight;
public string $conversions;
/**
* Create a new component instance.
*/
public function __construct(Weight $weight)
{
$this->weight = $weight;
$this->conversions =
$weight->toString(WeighingUnitType::TroyOunce) . '<br/>' .
$weight->toString(WeighingUnitType::Gram) . '<br>' .
$weight->toString(WeighingUnitType::Pennyweight);
}
/**
* Get the view / contents that represent the component.
*/
public function render(): View|Closure|string
{
return view('components.weight-with-conversions');
}
}
View:
<button data-popover data-tippy-content="{!! $conversions !!}" class="underline-dotted">
{{ $weight->toString() }}
</button>
How to reproduce the bug
No response
Package Version
3.1.0
PHP Version
8.1.x
Laravel Version
10
Alpine Version
No response
Theme
None
Notes
No response
Error Message
No response
About this issue
- Original URL
- State: closed
- Created 8 months ago
- Comments: 16
Perfect, thanks, I’ll take a look shortly.