Skip to content

Using the word new somewhere (String, variable part, a.s.o) inside a Volt component can cause render problems. #155

Description

@ojsoft

Volt Version

1.10.5

Laravel Version

4.3.3

PHP Version

8.2

Database Driver & Version

No response

Description

As soon as the word "new" appears in certain places of the volt component, the rendering gets weird.

I show 3 examples, but I had even more issues. I guess they all point to the same problem.

I upgraded from Livewire 3 to 4 and I do have numerous Volt components in my project. Quite a few are affected by this bug.

Steps To Reproduce

1. Example

  rules([
     'count' => ['required', 'int', 'min:1', 'max:1000', new \App\Rules\GhpRule],
     'gift' => ['boolean'],
  ]);

becomes by the volt renderer

  rules([
     'count' => ['required', 'int', 'min:1', 'max:1000', return new \App\Rules\GhpRule],
     'gift' => ['boolean'],
  ]);

Which gives an exception.

2. Example

THIS DOES cause a render problem:

<?php

use function Livewire\Volt\{state,on,computed};

state([
   'new_count' => false,
]);

?>

<div x-data>
   <x-svg-icon title="{{ 'Previous new contribution' }}" class="{{ $new_count ? '' : 'opacity-30' }}" icon="up"/>
</div>


THIS DOES NOT cause the render problem:

<?php

use function Livewire\Volt\{state,on,computed};

state([
'new_count' => false,
]);

?>

<div x-data>
<x-svg-icon title="{{ 'Previous contribution' }}" class="{{ $new_count ? '' : 'opacity-30' }}" icon="up"/>
</div>

All that I had to change was to change Previous new contribution to Previous contribution !

The render problem is that the return view function is injected inside the last php function found in the volt component. Which causes an exception at the protected keyword.

3. Example

$new = computed(fn() => $this->forumThread);
becomes by the volt renderer

return new = computed(fn() => $this->forumThread);
Which then throws an exception or course.

When I change this to:

$newThread = computed(fn() => $this->forumThread);
everything works.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions