laravel-10laravel-backpack

Some attributes ignored when use subfields in a relationship


I'm using this relationship in a project.

        $this->crud->addField([
            'name' => 'laundryItems',
            'type' => 'relationship',
            'tab'  => 'Pieza a enviar',
            'label' => 'Piezas en el envío',
            // ..
            'subfields' => [

                [
                    'name' => 'qty',
                    'type' => 'number',
                    'label' => 'Cantidad TOTAL',
                    'hint'  => 'Total de piezas enviadas/recibidas',
                    'wrapper' => [
                        'class' => 'form-group col-md-3',
                    ]
                ],
                [
                    'name' => 'qtyDamaged',
                    'type' => 'number',
                    'label' => 'Cantidad Dañadas',
                    'hint'  => 'De las recibidas, cuántas dañadas',
                    'wrapper' => [
                        'class' => 'form-group col-md-3',
                    ]
                ],
                [
                    'name' => 'qtyDirty',
                    'type' => 'number',
                    'label' => 'Cantidad Sucias',
                    'hint'  => 'De las recibidas, cuántas sucias',
                    'wrapper' => [
                        'class' => 'form-group col-md-3',
                    ]
                ],
                [
                    'name' => 'comment',
                    'label' => 'Comentario',
                    'type' => 'textarea',
                    'wrapper' => [
                        'class' => 'form-group col-md-6',
                    ],
                ],
            ],
        ]);

which is working perfectly well. But now I want to use options and attribute but both are ignored until I delete the subfields property

So if I use

$this->crud->addField([
            'name' => 'laundryItems',
            'type' => 'relationship',
            'tab'  => 'Pieza a enviar',
            'label' => 'Piezas en el envío',
            'attribute' => 'pmsCode',
        ]);

attribute is applied, but if I add the subfields again, then not. That doesn't make any sense. I deleted the view cache but still the same issue.

PHP VERSION:

PHP 8.2.15 (cli) (built: Jan 20 2024 14:17:05) (NTS) Copyright (c) The PHP Group Zend Engine v4.2.15, Copyright (c) Zend Technologies with Zend OPcache v8.2.15, Copyright (c), by Zend Technologies

LARAVEL VERSION:

10.44.0.0

BACKPACK PACKAGE VERSIONS:

backpack/backupmanager: v5.0.0 backpack/basset: 1.2.2 backpack/crud: 6.6.3 backpack/devtools: 3.0.4 backpack/editable-columns: 3.0.5 backpack/generators: v4.0.3 backpack/logmanager: v5.0.1 backpack/permissionmanager: 7.1.1 backpack/pro: 2.1.3 backpack/settings: 3.1.0 backpack/theme-coreuiv2: 1.2.3 backpack/theme-coreuiv4: 1.1.1 backpack/theme-tabler: 1.2.0


Solution

  • I answer my self. It's very well documented, if you need to modify the primary select you have to use the attribute pivotSelect https://backpackforlaravel.com/docs/6.x/crud-fields#configuring-the-pivot-select-field

    'pivotSelect'=> [
                    'options' => function($model) {
                        return $model->where('active', 1);
                    },
                    'attribute' => 'pmsCode'
                ]