#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,
]