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]: saving class with multiple object brick #16035

Closed
abhiramalli opened this issue Oct 1, 2023 · 4 comments · Fixed by #16041
Closed

[Bug]: saving class with multiple object brick #16035

abhiramalli opened this issue Oct 1, 2023 · 4 comments · Fixed by #16041
Assignees
Labels
Milestone

Comments

@abhiramalli
Copy link

abhiramalli commented Oct 1, 2023

Pimcore version

11

Steps to reproduce

create class A to allow multiple object bricks

create 3 object brick with each having different localised fields

now create class A
add all object bricks and save (it will work)
now remove one object brick and save (it wil work)
now try to add removed brick or any new brick (it throw exception)

i have checked in pimcore demo also it has same issue

Actual Behavior

image

Status: 500 | Internal Server Error
URL: /admin/object/save?task=publish
Method: PUT
Message: Pimcore\Model\DataObject\Localizedfield::setObjectOmitDirty(): Argument #1 ($object) must be of type Pimcore\Model\DataObject\Localizedfield|Pimcore\Model\DataObject\Fieldcollection\Data\AbstractData|Pimcore\Model\DataObject\Objectbrick\Data\AbstractData|Pimcore\Model\DataObject\Concrete, null given, called in /var/www/html/vendor/pimcore/pimcore/models/DataObject/ClassDefinition/Data/Localizedfields.php on line 440
Trace:
in /var/www/html/vendor/pimcore/pimcore/models/DataObject/Localizedfield.php:793
#0 /var/www/html/vendor/pimcore/pimcore/models/DataObject/ClassDefinition/Data/Localizedfields.php(440): Pimcore\Model\DataObject\Localizedfield->setObjectOmitDirty(NULL)
#1 /var/www/html/vendor/pimcore/pimcore/models/DataObject/Objectbrick/Data/Dao.php(121): Pimcore\Model\DataObject\ClassDefinition\Data\Localizedfields->save(NULL, Array)
#2 [internal function]: Pimcore\Model\DataObject\Objectbrick\Data\Dao->save(Object(Pimcore\Model\DataObject\Advisory), Array)
#3 /var/www/html/vendor/pimcore/pimcore/lib/Model/AbstractModel.php(222): call_user_func_array(Array, Array)
#4 /var/www/html/vendor/pimcore/pimcore/models/DataObject/Objectbrick.php(181): Pimcore\Model\AbstractModel->__call('save', Array)
#5 /var/www/html/vendor/pimcore/pimcore/models/DataObject/ClassDefinition/Data/Objectbricks.php(356): Pimcore\Model\DataObject\Objectbrick->save(Object(Pimcore\Model\DataObject\Advisory), Array)
#6 /var/www/html/vendor/pimcore/pimcore/models/DataObject/Concrete/Dao.php(255): Pimcore\Model\DataObject\ClassDefinition\Data\Objectbricks->save(Object(Pimcore\Model\DataObject\Advisory), Array)
#7 /var/www/html/vendor/pimcore/pimcore/models/DataObject/Concrete.php(222): Pimcore\Model\DataObject\Concrete\Dao->update(true)
#8 /var/www/html/vendor/pimcore/pimcore/models/DataObject/AbstractObject.php(578): Pimcore\Model\DataObject\Concrete->update(true, Array)
#9 /var/www/html/vendor/pimcore/pimcore/models/DataObject/Concrete.php(697): Pimcore\Model\DataObject\AbstractObject->save(Array)
#10 /var/www/html/vendor/pimcore/admin-ui-classic-bundle/src/Controller/Admin/DataObject/DataObjectController.php(1428): Pimcore\Model\DataObject\Concrete->save()
#11 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(182): Pimcore\Bundle\AdminBundle\Controller\Admin\DataObject\DataObjectController->saveAction(Object(Symfony\Component\HttpFoundation\Request))
#12 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(76): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1)
#13 /var/www/html/vendor/symfony/http-kernel/Kernel.php(197): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#14 /var/www/html/vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php(35): Symfony\Component\HttpKernel\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request))
#15 /var/www/html/vendor/autoload_runtime.php(29): Symfony\Component\Runtime\Runner\Symfony\HttpKernelRunner->run()
#16 /var/www/html/public/index.php(19): require_once('/var/www/html/v...')
#17 {main}

Expected Behavior

object needs to be save

Tasks

No tasks being tracked yet.
@abhiramalli abhiramalli added the Bug label Oct 1, 2023
@abhishek-omnia
Copy link

abhishek-omnia commented Oct 1, 2023

vendor/pimcore/pimcore/models/DataObject/Objectbrick.php in this file
if (empty($this->items)) {
foreach ($this->getObjectVars() as $var) {
if ($var instanceof Objectbrick\Data\AbstractData) {
$this->items[] = $var;
}
}
}

    i observed the issue caused by above code
    
    as of now i have fixed by changing 
     if (true) {
        foreach ($this->getObjectVars() as $var) {
            if ($var instanceof Objectbrick\Data\AbstractData) {
                $this->items[] = $var;
            }
        }
    }
    
  please let me know any other workaround we have

@dvesh3 dvesh3 added this to the 11.0.12 milestone Oct 2, 2023
@abhishek-omnia
Copy link

@dvesh3 Hi
any workaround is there for this or we need to patch it

@dvesh3
Copy link
Contributor

dvesh3 commented Oct 2, 2023

@abhishek-omnia we are looking into the issue and will fix it in the next bugfix version of 11.0

@dvesh3
Copy link
Contributor

dvesh3 commented Oct 2, 2023

Fixed by #16041

@dvesh3 dvesh3 closed this as completed Oct 2, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants