Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug] Form Operation - cannot add raw fields of a morph as hidden fields #5297

Closed
realtebo opened this issue Aug 25, 2023 · 3 comments
Closed
Labels

Comments

@realtebo
Copy link
Contributor

Bug report

What I did

Created a "form operation"

 php artisan backpack:crud-form-operation Storn

the model as a coinable MorphTo relation.
so the table has coinable_id and coinable_type

this because the operation is loading into crud currentEntry a record I want to manipulate,

I want to add as hidden fileds these 2 fields

    $this->crud->addField([
        'type' => 'hidden',
        'name' => 'coinable_id',
        'value' => $this->crud->getCurrentEntry()->coinable->id,
    ]);

    $this->crud->addField([
        'type' => 'hidden',
        'name' => 'coinable_type',
        'value' => $this->crud->getCurrentEntry()->coinable_type,
    ]);

What I expected to happen

I expeteced 2 hidden fields; coinable_id and coinable_type

What happened

image

What I've already tried to fix it

nothing for now

Is it a bug in the latest version of Backpack?

After I run composer update backpack/crud the bug... is it still there?

yes

Backpack, Laravel, PHP, DB version

When I run php artisan backpack:version the output is:

### PHP VERSION:
PHP 8.2.8 (cli) (built: Jul  4 2023 15:53:15) (ZTS Visual C++ 2019 x64)
Copyright (c) The PHP Group
Zend Engine v4.2.8, Copyright (c) Zend Technologies

### LARAVEL VERSION:
10.20.0.0

### BACKPACK PACKAGE VERSIONS:
backpack/basset: 1.1.1
backpack/crud: 6.1.15
backpack/generators: v4.0.2
backpack/pro: 2.0.11
backpack/theme-tabler: 1.0.12
@pxpm
Copy link
Contributor

pxpm commented Aug 25, 2023

Hey @realtebo it's usually better to post the full error stack trace to help us to trace/reproduce the error.

From that SS I can't tell where/why the error is triggered.

I may throw my guess here, that if the problem is some entity conflict, you can try entity => false in your fields.

Cheers

@realtebo
Copy link
Contributor Author

[2023-08-25 11:25:21] local.ERROR: Call to undefined method App\Models\CoinMovement::coinable_id() {"userId":195,"exception":"[object] (BadMethodCallException(code: 0): Call to undefined method App\Models\CoinMovement::coinable_id() at C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Support\Traits\ForwardsCalls.php:67)
[stacktrace]
#0 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Support\Traits\ForwardsCalls.php(36): Illuminate\Database\Eloquent\Model::throwBadMethodCallException('coinable_id')
#1 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(2333): Illuminate\Database\Eloquent\Model->forwardCallTo(Object(Illuminate\Database\Eloquent\Builder), 'coinable_id', Array)
#2 C:\laragon\www\project-coin\vendor\backpack\crud\src\app\Library\CrudPanel\Traits\MorphRelationships.php(54): Illuminate\Database\Eloquent\Model->__call('coinable_id', Array)
#3 C:\laragon\www\project-coin\vendor\backpack\crud\src\app\Library\CrudPanel\Traits\MorphRelationships.php(68): Backpack\CRUD\app\Library\CrudPanel\CrudPanel->getMorphToFieldNames('coinable_id')
#4 C:\laragon\www\project-coin\vendor\backpack\crud\src\app\Library\CrudPanel\Traits\Fields.php(57): Backpack\CRUD\app\Library\CrudPanel\CrudPanel->makeSureMorphSubfieldsAreDefined(Array)
#5 C:\laragon\www\project-coin\vendor\backpack\crud\src\app\Library\CrudPanel\Traits\Fields.php(109): Backpack\CRUD\app\Library\CrudPanel\CrudPanel->makeSureFieldHasNecessaryAttributes(Array)
#6 C:\laragon\www\project-coin\app\Http\Controllers\Teacher\Operations\StornMovementOperation.php(130): Backpack\CRUD\app\Library\CrudPanel\CrudPanel->addField(Array)
#7 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Routing\Controller.php(54): App\Http\Controllers\Teacher\CoinMovementCrudController->getStornMovementForm(6)
#8 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Routing\ControllerDispatcher.php(43): Illuminate\Routing\Controller->callAction('getstornMovemen...', Array)
#9 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Routing\Route.php(259): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(App\Http\Controllers\Teacher\CoinMovementCrudController), 'getstornMovemen...')
#10 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Routing\Route.php(205): Illuminate\Routing\Route->runController()
#11 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Routing\Router.php(799): Illuminate\Routing\Route->run()
#12 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(141): Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#13 C:\laragon\www\project-coin\vendor\backpack\crud\src\app\Http\Controllers\CrudController.php(43): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#14 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(162): Backpack\CRUD\app\Http\Controllers\CrudController->Backpack\CRUD\app\Http\Controllers\{closure}(Object(Illuminate\Http\Request), Object(Closure))
#15 C:\laragon\www\project-coin\app\Http\Middleware\PasswordMustBeChanged.php(43): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#16 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): App\Http\Middleware\PasswordMustBeChanged->handle(Object(Illuminate\Http\Request), Object(Closure))
#17 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Auth\Middleware\Authorize.php(57): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#18 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Auth\Middleware\Authorize->handle(Object(Illuminate\Http\Request), Object(Closure), 'access-teacher-...')
#19 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#20 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull.php(31): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#21 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull->handle(Object(Illuminate\Http\Request), Object(Closure))
#22 C:\laragon\www\project-coin\app\Http\Middleware\CheckIfAdmin.php(66): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#23 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): App\Http\Middleware\CheckIfAdmin->handle(Object(Illuminate\Http\Request), Object(Closure))
#24 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Routing\Middleware\SubstituteBindings.php(50): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#25 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure))
#26 C:\laragon\www\project-coin\vendor\backpack\crud\src\app\Http\Middleware\AuthenticateSession.php(62): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#27 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Backpack\CRUD\app\Http\Middleware\AuthenticateSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#28 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\VerifyCsrfToken.php(78): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#29 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure))
#30 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\View\Middleware\ShareErrorsFromSession.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#31 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#32 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Session\Middleware\StartSession.php(121): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#33 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Session\Middleware\StartSession.php(64): Illuminate\Session\Middleware\StartSession->handleStatefulRequest(Object(Illuminate\Http\Request), Object(Illuminate\Session\Store), Object(Closure))
#34 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#35 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#36 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))
#37 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Cookie\Middleware\EncryptCookies.php(67): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#38 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))
#39 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(116): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#40 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Routing\Router.php(798): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#41 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Routing\Router.php(777): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
#42 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Routing\Router.php(741): Illuminate\Routing\Router->runRoute(Object(Illuminate\Http\Request), Object(Illuminate\Routing\Route))
#43 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Routing\Router.php(730): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#44 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(200): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
#45 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(141): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request))
#46 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#47 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull.php(31): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#48 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull->handle(Object(Illuminate\Http\Request), Object(Closure))
#49 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#50 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TrimStrings.php(40): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#51 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Foundation\Http\Middleware\TrimStrings->handle(Object(Illuminate\Http\Request), Object(Closure))
#52 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#53 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle(Object(Illuminate\Http\Request), Object(Closure))
#54 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance.php(86): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#55 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle(Object(Illuminate\Http\Request), Object(Closure))
#56 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Http\Middleware\HandleCors.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#57 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Http\Middleware\HandleCors->handle(Object(Illuminate\Http\Request), Object(Closure))
#58 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Http\Middleware\TrustProxies.php(39): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#59 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(180): Illuminate\Http\Middleware\TrustProxies->handle(Object(Illuminate\Http\Request), Object(Closure))
#60 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(116): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#61 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(175): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#62 C:\laragon\www\project-coin\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(144): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#63 C:\laragon\www\project-coin\public\index.php(51): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#64 {main}
"}

@pxpm
Copy link
Contributor

pxpm commented Aug 25, 2023

Thanks, does the entity => false in your fields solves the problem ?

Also, there is an easy way to share the strack trace here:
image

You can select what to share, usually the basic call trace like you posted there is enough, but it's easier to read and it's not a huuuuuge comment in the middle of a discussion. 👍

@tabacitu tabacitu closed this as completed Jun 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants