Introduction
You may create your own custom entry classes and views, which you can reuse across your project, and even release as a plugin to the community. To create a custom entry class and view, you may use the following command:resources/views/filament/infolists/components/audio-player-entry.blade.php.
Filament infolist entries are not Livewire components. Defining public properties and methods on a infolist entry class will not make them accessible in the Blade view.
Accessing the state of the entry in the Blade view
Inside the Blade view, you may access the state of the entry using the$getState() function:
Accessing the state of another component in the Blade view
Inside the Blade view, you may access the state of another component in the schema using the$get() function:
Accessing the Eloquent record in the Blade view
Inside the Blade view, you may access the current Eloquent record using the$record variable:
Accessing the current operation in the Blade view
Inside the Blade view, you may access the current operation, usuallycreate, edit or view, using the $operation variable:
Accessing the current Livewire component instance in the Blade view
Inside the Blade view, you may access the current Livewire component instance using$this:
Accessing the current entry instance in the Blade view
Inside the Blade view, you may access the current entry instance using$entry. You can call public methods on this object to access other information that may not be available in variables:
Adding a configuration method to a custom entry class
You may add a public method to the custom entry class that accepts a configuration value, stores it in a protected property, and returns it again from another public method:$getSpeed() function:
Allowing utility injection in a custom entry configuration method
Utility injection is a powerful feature of Filament that allows users to configure a component using functions that can access various utilities. You can allow utility injection by ensuring that the parameter type and property type of the configuration allows the user to pass aClosure. In the getter method, you should pass the configuration value to the $this->evaluate() method, which will inject utilities into the userâs function if they pass one, or return the value if it is static:
speed() method, and inject any utility as a parameter:
Calling entry methods from JavaScript
Sometimes you need to call a method on the entry class from JavaScript in the Blade view. For example, you might want to fetch data asynchronously or perform some server-side computation. Filament provides a way to expose methods on your entry class to JavaScript using the#[ExposedLivewireMethod] attribute.
Exposing a method
To expose a method to JavaScript, add the#[ExposedLivewireMethod] attribute to a public method on your custom entry class:
Only methods marked with
#[ExposedLivewireMethod] can be called from JavaScript. This is a security measure to prevent arbitrary method execution.Calling the method from JavaScript
In your Blade view, you may call the exposed method using$wire.callSchemaComponentMethod(). The first argument is the componentâs key (available via $getKey()), and the second argument is the method name. You may pass arguments as a third argument:
Preventing re-renders
By default, calling an exposed method will trigger a re-render of the Livewire component. If your method doesnât need to update the UI, you may add Livewireâs#[Renderless] attribute alongside #[ExposedLivewireMethod] to skip the re-render: