-
-
Notifications
You must be signed in to change notification settings - Fork 858
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Declaration of Column::data does not compatible with Fluent::data #3201
Declaration of Column::data does not compatible with Fluent::data #3201
Comments
I have the same problem, this was caused by the update in Laravel 11.34 |
any updates? having this issue from today |
same error with me |
Here is the update that broke many projects: |
The solution is avoiding the error but having a second parameter here doesn't make sense, we need to find a proper way to implement this method.
|
Should we petition to revert the latest PR (laravel/framework#53665), remove the data method added to the framework, or move on with the quick solution suggested by @OzanKurt? |
I would personally like a revert. The new pull request doesn't seem to be adding much to the codebase other than "forcefully combining" two completely different classes' ( BUT, while we wait for an action we should implement a temporary solution for the |
Dear friends, while waiting for the author to fix it, there is no better way than temporarily implementing the solution I mentioned at the end. Measures to close the code line or remove $default or change statics properties will cause other errors. |
How about giving us a way to override entire fluent method, i mean leave that door open so that we won't 100% rely on package manager to make that update, it is possible ? |
or just down to previous laravel version until any they fix it |
@yajra why dont you copy laravels fluent class into your codebase and you are good? |
That is actually a great idea, having fluent as a standalone package. Simply something like |
I agree, this is my initial plan if the revert never happens in the framework. It seems like you went ahead with it :) |
For now you can downgrade using |
A good solution for this is to extend a decorator class instead of extending Fluent directly: <?php
use ArrayAccess;
use Illuminate\Contracts\Support\Arrayable;
use Illuminate\Contracts\Support\Jsonable;
use Illuminate\Support\Traits\ForwardsCalls;
use JsonSerializable;
/**
* @template TKey of array-key
* @template TValue
*
* @implements \Illuminate\Contracts\Support\Arrayable<TKey, TValue>
* @implements \ArrayAccess<TKey, TValue>
*/
abstract class FluentDecorator implements Arrayable, ArrayAccess, Jsonable, JsonSerializable
{
use ForwardsCalls;
/**
* The Fluent instance.
*
* @var \Illuminate\Support\Fluent<TKey, TValue>
*/
protected $fluent;
/**
* Create a new fluent instance.
*
* @param iterable<TKey, TValue> $attributes
* @return void
*/
public function __construct($attributes = [])
{
$this->fluent = new \Illuminate\Support\Fluent($attributes);
}
/**
* Convert the fluent instance to an array.
*
* @return array<TKey, TValue>
*/
public function toArray()
{
return $this->fluent->getAttributes();
}
/**
* Convert the object into something JSON serializable.
*
* @return array<TKey, TValue>
*/
public function jsonSerialize(): array
{
return $this->toArray();
}
/**
* Convert the fluent instance to JSON.
*
* @param int $options
* @return string
*/
public function toJson($options = 0)
{
return json_encode($this->jsonSerialize(), $options);
}
/**
* Determine if the given offset exists.
*
* @param TKey $offset
* @return bool
*/
public function offsetExists($offset): bool
{
return $this->fluent->offsetExists($offset);
}
/**
* Get the value for a given offset.
*
* @param TKey $offset
* @return TValue|null
*/
public function offsetGet($offset): mixed
{
return $this->fluent->offsetGet($offset);
}
/**
* Set the value at the given offset.
*
* @param TKey $offset
* @param TValue $value
* @return void
*/
public function offsetSet($offset, $value): void
{
$this->fluent->offsetSet($offset, $value);
}
/**
* Unset the value at the given offset.
*
* @param TKey $offset
* @return void
*/
public function offsetUnset($offset): void
{
$this->fluent->offsetUnset($offset);
}
/**
* Handle dynamic calls to the fluent instance to set attributes.
*
* @param TKey $method
* @param array{0: ?TValue} $parameters
* @return $this
*/
public function __call($method, $parameters)
{
return $this->forwardDecoratedCallTo($this->fluent, $method, $parameters);
}
/**
* Dynamically retrieve the value of an attribute.
*
* @param TKey $key
* @return TValue|null
*/
public function __get($key)
{
if (method_exists($this->fluent, 'value')) {
return $this->fluent->value($key);
}
return $this->fluent->get($key);
}
/**
* Dynamically set the value of an attribute.
*
* @param TKey $key
* @param TValue $value
* @return void
*/
public function __set($key, $value)
{
$this->fluent->offsetSet($key, $value);
}
/**
* Dynamically check if an attribute is set.
*
* @param TKey $key
* @return bool
*/
public function __isset($key)
{
return $this->fluent->offsetExists($key);
}
/**
* Dynamically unset an attribute.
*
* @param TKey $key
* @return void
*/
public function __unset($key)
{
$this->fluent->offsetUnset($key);
}
} |
Hi
What should I do? |
I have is working in 11.33.2 as well |
Same problem here! |
Summary of problem or feature request
Error
Declaration of Yajra\DataTables\Html\Column::data(array|string $value): static must be compatible with Illuminate\Support\Fluent::data($key = null, $default = null)
Code snippet of problem
File vendor/yajra/laravel-datatables-html/src/Html/Column.php, function data (line 305 - 310) was the reason:
System details
Solution
File vendor/yajra/laravel-datatables-html/src/Html/Column.php, change function data (line 305 - 310) to:
The text was updated successfully, but these errors were encountered: