konnco / filament-import

why import must use a template when you can import all files dynamically?
MIT License
202 stars 61 forks source link

Filament\Forms\Components\Select::isOptionDisabled(): Argument #2 ($label) must be of type string, null given #60

Open abdulmejidshemsu opened 1 year ago

abdulmejidshemsu commented 1 year ago

Filament\Forms\Components\Select::isOptionDisabled(): Argument #2 ($label) must be of type string, null given

frankyso commented 1 year ago

can you please attach your script?

emjay64 commented 1 year ago

@abdulmejidshemsu did you get this sorted out I'm having the same problem

abdulmejidshemsu commented 1 year ago

@EmJay646 the issue was from the excel file I was using, it contained validation, it wasn't plain excel file.

what you can do to solve this is remove all validation from the excel that you are trying to upload or copy and paste the entire content of that excel to another blank excel and upload the new one

TheFehr commented 1 year ago

I am encountering the same error when I have a Resource that defines a Forms\Components\Select::make(...)->relationship(..) which is a Relationship pointing to the same class as the Resource class.

My Company has a nullable LinkedCompany but if I add that to the $form->schema([ it fails with the mentioned error.

class CompanyResource extends Resource
{
    protected static ?string $model = Company::class;

    protected static ?string $label = 'Firma';
    protected static ?string $pluralLabel = 'Firmen';
    protected static ?string $recordTitleAttribute = 'name';

    public static function form(Form $form): Form
    {
        return $form
            ->schema([
                Forms\Components\TextInput::make('name')
                    ->label('Name')
                    ->maxLength(191),
                Forms\Components\Select::make('linked_company_id')
                    ->label('Linked Firma')
                    ->relationship('linkedCompany', 'name'),
            ]);
    }

}
acoustep commented 1 year ago

I've just had this same error and came across this issue by chance (I'm not using filament-import so I think this is related to the core).

Can confirm that I'm trying to create a relationship with the same model as the resource that I'm in.

class QuestionsRelationManager extends RelationManager {
    protected static string $relationship = 'questions';
    // ....
    Repeater::make('hide_logics')
      ->relationship()
      ->schema([
          Select::make('value_question_id')
              ->label('Related Question')
              ->relationship('related_question', 'id')
              ->options(function (RelationManager $livewire) {
                  return $livewire->ownerRecord->questions()->get()->filter(fn($q) => $q->id != $livewire->id)->pluck('text', 'id');
              })
              ->searchable()
              ->required(),

Haven't found a solution yet, just thought I'd chime in with a confirmation of the issue.

Nes-cmd commented 1 year ago

I found the issue is that in the options field of select, null is returned. In the above one return $livewire->ownerRecord->questions()->get()->filter(fn($q) => $q->id != $livewire->id)->pluck('text', 'id'); is returning ['someId' => null ]. so make sure that the text is not null for all reords.

ntsbstn commented 1 year ago

I had the same issue. It's surely related to Core, but since this thread is the first on Google for this issue, I'm reacting here.

Here is how I fixed it for those who are still struggling.

In my case, the issue raised when at least one of the related option was missing the 'name'. I just filtered my query with 'whereNotNull' as below.

Select::make('organization_id')
  ->label('Organization')
  ->options(Organization::whereNotNull('name')->pluck('name', 'id'))
  ->disabled()
  ->default(function (RelationManager $livewire) {
      return $livewire->ownerRecord->organization_id ?? '';
}),                    

Hope this helps.

YANGJIAXUE2022510 commented 1 year ago

"The error was caused by a null value as the second parameter in the database, which I forgot to make non-null when writing the code. An empty value was inserted into the database, resulting in an error."