Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

suryapsdkhanal@gmail.com's avatar

Calling livewire method inside blade template

I am trying to call a livewire component method inside the blade template, but I am getting an "undefined method called" error. Do there any workaround to solve this problem?

Livewire Component::

class AskQuestion extends Component {
	public function convertNumber($engNum) {
		...
		return $convertedNumber;
        }
}

The blade template looks like::

<select wire:model="dob.year" type="text" class="mt-1">
    @foreach($years as $engYear )
         <option >{{ convertNumber($engYear) }}</option>
    @endforeach
</select>
0 likes
6 replies
MirasMustimuly's avatar

Hi, only class properties are passed to blade view not methods. If you want to pass method too you can do it like so

public function render()
{
        $convertNumber = function () {
            // logic
        };

       return view('livewire.counter', compact('convertNumber'));
}
2 likes
Marcelo Welter's avatar

Try with static function

class AskQuestion extends Component {
	public $convertNumber = '\App\Http\Livewire\AskQuestion::convertNumberInternal';
	static function convertNumberInternal($engNum) {
		...
		return $convertedNumber;
        }
}

inside blade file

    @foreach($years as $engYear )
         <option >{{ $convertNumber($engYear) }}</option>
    @endforeach

This way work for me

3 likes
frankstein's avatar

it's simple you can just write it on this way

@foreach($years as $engYear )
     <option >{{ $this->convertNumber($engYear) }}</option>
@endforeach
3 likes

Please or to participate in this conversation.