[英]Call to a member function toArray() on array
我正在嘗試使用這個 package: https://packagist.org/packages/digital-creative/conditional-container
。 但是對於這個基本示例:
return array_merge(
[
Select::make('Option', 'option')
->options([
1 => 'Option 1',
2 => 'Option 2',
3 => 'Option 3',
]),
/**
* Only show field Text::make('Field A') if the value of option is equals 1
*/
ConditionalContainer::make([ Text::make('Field A') ])->if('option = 1'),
Text::make('Title'),
Textarea::make('Description'),
],
$arr
);
我收到錯誤消息: Call to a member function toArray() on array
。
如果我改為:
return array_merge(
[
[
Select::make('Option', 'option')
->options([
1 => 'Option 1',
2 => 'Option 2',
3 => 'Option 3',
]),
ConditionalContainer::make([ Text::make('Field A') ])->if('option = 1')
],
表明:
message: "Call to a member function getUpdateRules() on array"
即使只有下面的示例,它也會顯示“消息:”調用數組上的成員 function toArray()“:
public function definition(): array
{
return [
Select::make('Option', 'option')
->options([
1 => 'Option 1',
2 => 'Option 2',
3 => 'Option 3',
]),
ConditionalContainer::make([ Text::make('Field A') ])->if('option = 1')
];
}
你知道如何解決這個問題嗎? 謝謝!
不確定是做什么的,但您正在向 class 發送一個數組,class 有一個方法 toArray()。
這就是為什么我總是在我的代碼中使用返回類型,因為如果輸入不匹配,它就會中斷。
會不會是它認為這是一個集合或者一個class需要輸入。
在某些情況下,我很懶,會嘗試以下方法:
collect(return array_merge(
[
[
Select::make('Option', 'option')
->options([
1 => 'Option 1',
2 => 'Option 2',
3 => 'Option 3',
]),
ConditionalContainer::make([ Text::make('Field A') ])->if('option = 1')
],)
因為許多包使用 Collection 作為處理、過濾和搜索數組的方式。
但這更多的是猜測而不是實際知識。 查看vendor map中的function getUpdateRules(),它是做什么的。
/**
* @param Resource|Model $resource
*
* @return array
*/
public function resolveDependencyFieldUsingResource($resource): array
{
$matched = $this->runConditions(
$this->flattenRelationships($resource)
);
return $matched ? $this->fields->toArray() : [];
}
這是 function,您可以看到它需要 model 或資源 class
根據文檔:
return [
Select::make('Option', 'option')
->options([
1 => 'Option 1',
2 => 'Option 2',
3 => 'Option 3',
]),
//more suff
你的返回數組
array_merge(
[ // <--- note the extra bracket
[
Select::make('Option', 'option')
->options([
1 => 'Option 1',
2 => 'Option 2',
3 => 'Option 3',
]),
ConditionalContainer::make([ Text::make('Field A') ])->if('option = 1')
],
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.