Я не получаю «добавить кнопку» при встроенном создании в рюкзаке Laravel

#php #laravel #laravel-backpack

#php #laravel #laravel-рюкзак

Вопрос:

Следуя этой документации: https://backpackforlaravel.com/docs/4.1/crud-operation-inline-create Я пытаюсь создать связь между счетами-фактурами (первичными) и строками счетов-фактур (вторичными). Ссылка кажется хорошей, но мне не удается получить кнопку » добавить», необходимую для создания вторичной формы. результат моего кода

Мой код.

Основной класс (invoiceCrudController)

 <?php

namespace AppHttpControllersAdmin;

use AppModelsInvoice;
use BackpackCRUDappHttpControllersCrudController;

/**
 * Class InvoiceCrudController
 * @package AppHttpControllersAdmin
 * @property-read BackpackCRUDappLibraryCrudPanelCrudPanel $crud
 */
class InvoiceCrudController extends CrudController
{
    use BackpackCRUDappHttpControllersOperationsListOperation;
    use BackpackCRUDappHttpControllersOperationsCreateOperation;
    use BackpackCRUDappHttpControllersOperationsUpdateOperation;
    use BackpackCRUDappHttpControllersOperationsShowOperation;
    use SetAccesses;
    
    protected function setupCreateOperation()
    {
        $this->crud->setValidation(InvoiceRequest::class);

        $this->crud->addFields([
            /*other cases*/
            [
                'name' => 'invoiceLines',
                'type' => 'relationship',
                'tags'=> 'invoice lines',
                'ajax'=>true,
                [ // specify the entity in singular
                    'entity' => 'invoiceLine', // the entity in singular
                ]
            ],

        ]);
    }

    protected function setupUpdateOperation()
    {
        $this->setupCreateOperation();
    }
}
  

вторичный класс (invoiceLinesController)

 <?php

namespace AppHttpControllersAdmin;

use AppModelsInvoiceLine;
use BackpackCRUDappHttpControllersCrudController;

/**
 * Class InvoiceCrudController
 * @package AppHttpControllersAdmin
 * @property-read BackpackCRUDappLibraryCrudPanelCrudPanel $crud
 */
class InvoiceLinesCrudController extends CrudController
{
    use BackpackCRUDappHttpControllersOperationsCreateOperation;
    use BackpackCRUDappHttpControllersOperationsInlineCreateOperation;

    public function setup()
    {
        $this->setAccesses('invoiceLine');
        $this->crud->setModel('AppModelsInvoiceLine');
        $this->crud->setRoute(config('backpack.base.route_prefix') . '/invoiceLine');
        $this->crud->setEntityNameStrings('invoiceLine', 'invoiceLines');

        $this->crud->addColumns([
            [
                'name' => 'slug',
                'type' => 'text',
            ],
            [
                'name' => 'quantity',
                'type' => 'number',
                'default' => 1,
                'wrapper' => [
                    'class' => 'form-group col-sm-6 col-md-6 col-lg-3 col-xl-3'
                ]
            ],
            [
                'name' =>'unit_vat_excluded',
                'type' => 'text',
                'wrapper' => [
                    'class' => 'form-group col-sm-6 col-md-6 col-lg-3 col-xl-3'
                ]
            ]
        ]);
    }

    protected function setupListOperation()
    {
        $this->crud->enableExportButtons();

        CustomerCrudController::addFilterCustomer();
    }

    protected function setupCreateOperation()
    {
        $this->crud->addFields([
            [
                'name' => 'slug',
                'type' => 'text',
                'allows_null' => false,
            ],
            [
                'name' => 'quantity',
                'type' => 'number',
                'default' => 1,
                'wrapper' => [
                    'class' => 'form-group col-sm-6 col-md-6 col-lg-3 col-xl-3'
                ]
            ],
            [
                'name' =>'unit_vat_excluded',
                'type' => 'text',
                'wrapper' => [
                    'class' => 'form-group col-sm-6 col-md-6 col-lg-3 col-xl-3'
                ]
            ]
        ]);
    }

    protected function setupUpdateOperation()
    {
        $this->setupCreateOperation();
    }

    protected function setupShowOperation()
    {

    }

    public static function getColumn()
    {
        return [
            'name' => 'invoice_line_id',
            'label' => 'InvoiceLines',
            'type' => 'select',
            'entity' => 'invoiceLine',
            'attribute' => 'pretty_print',
            'model' => InvoiceLine::class,
        ];
    }
}

  

Ответ №1:

Я думаю, что ошибка в вашем поданном определении:

$this-> crud-> addFields([ / другие случаи / [ ‘name’ => ‘InvoiceLines’, ‘type’ => ‘relationship’, ‘tags’=> ‘строки счета’, ‘ajax’=> true, [ // укажите объект в единственном числе ‘entity’ => ‘InvoiceLine’, // сущность в единственном числе ] ],

поскольку отношение включено для многих (я думаю), тогда файл должен быть:

 [
    'type' => "relationship",
    'name' => 'invoiceLines', 
    'ajax' => true,
    'inline_create' => true, 
]