-
Notifications
You must be signed in to change notification settings - Fork 13
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
Clarification about behaviour #13
Comments
Hey @lhasselb - the creation of the objects even if they are empty is intended. I'm not sure about the updated fields creating a new object - can you provide an example where this happens? |
Lets assume you have a (DataObject) Course with a Title, Content, Image and a Category. Beside that you have another (DataObject) called News. The Course object has a has_one relation and the fields for the News are displayed on a second tab called News within the Course using So far so good fields are displayed and as mentioned as long as you navigate to the mentioned tab and add some data (start simple just use a title field for the News object). But if you don't validate the News object for an empty title or add a default the following happens: I can understand a) I assume because the lines within the DataObjectExtension Hope that helps to clarify. |
With SS5 and the new MAILER_DSN environment variable, when set we are receiving the following error - Fatal error: Uncaught MJS\TopSort\CircularDependencyException: Circular dependency found: modelascontrollercatchallroute->hasoneedit->mailer-dsn-env->hasoneedit in /Users/joemadden/Sites/rumchata/vendor/marcj/topsort/src/CircularDependencyException.php:34 Stack trace: #0 /Users/joemadden/Sites/rumchata/vendor/marcj/topsort/src/Implementations/BaseImplementation.php(57): MJS\TopSort\CircularDependencyException::create(Array) #1 /Users/joemadden/Sites/rumchata/vendor/marcj/topsort/src/Implementations/ArraySort.php(63): MJS\TopSort\Implementations\BaseImplementation->throwCircularExceptionIfNeeded(Object(stdClass), Array) stevie-mayhew#2 /Users/joemadden/Sites/rumchata/vendor/marcj/topsort/src/Implementations/ArraySort.php(75): MJS\TopSort\Implementations\ArraySort->visit(Object(stdClass), Array) stevie-mayhew#3 /Users/joemadden/Sites/rumchata/vendor/marcj/topsort/src/Implementations/ArraySort.php(75): MJS\TopSort\Implementations\ArraySort->visit(Object(stdClass), Array) stevie-mayhew#4 /Users/joemadden/Sites/rumchata/vendor/marcj/topsort/src/Implementations/ArraySort.php(75): MJS\TopSort\Implementations\ArraySort->visit(Object(stdClass), Array) stevie-mayhew#5 /Users/joemadden/Sites/rumchata/vendor/marcj/topsort/src/Implementations/ArraySort.php(115): MJS\TopSort\Implementations\ArraySort->visit(Object(stdClass), Array) stevie-mayhew#6 /Users/joemadden/Sites/rumchata/vendor/marcj/topsort/src/Implementations/ArraySort.php(98): MJS\TopSort\Implementations\ArraySort->doSort() stevie-mayhew#7 /Users/joemadden/Sites/rumchata/vendor/silverstripe/config/src/Transformer/YamlTransformer.php(517): MJS\TopSort\Implementations\ArraySort->sort() stevie-mayhew#8 /Users/joemadden/Sites/rumchata/vendor/silverstripe/config/src/Transformer/YamlTransformer.php(104): SilverStripe\Config\Transformer\YamlTransformer->getSortedYamlDocuments() stevie-mayhew#9 /Users/joemadden/Sites/rumchata/vendor/silverstripe/config/src/Collections/MemoryConfigCollection.php(73): SilverStripe\Config\Transformer\YamlTransformer->transform(Object(SilverStripe\Config\Collections\MemoryConfigCollection)) stevie-mayhew#10 /Users/joemadden/Sites/rumchata/vendor/silverstripe/framework/src/Core/Config/CoreConfigFactory.php(89): SilverStripe\Config\Collections\MemoryConfigCollection->transform(Array) stevie-mayhew#11 /Users/joemadden/Sites/rumchata/vendor/silverstripe/framework/src/Core/Config/CoreConfigFactory.php(67): SilverStripe\Core\Config\CoreConfigFactory->createCore() stevie-mayhew#12 [internal function]: SilverStripe\Core\Config\CoreConfigFactory->SilverStripe\Core\Config\{closure}() stevie-mayhew#13 /Users/joemadden/Sites/rumchata/vendor/silverstripe/config/src/Collections/CachedConfigCollection.php(139): call_user_func(Object(Closure)) stevie-mayhew#14 /Users/joemadden/Sites/rumchata/vendor/silverstripe/config/src/Collections/CachedConfigCollection.php(88): SilverStripe\Config\Collections\CachedConfigCollection->getCollection() stevie-mayhew#15 /Users/joemadden/Sites/rumchata/vendor/silverstripe/framework/src/Core/Config/Config_ForClass.php(81): SilverStripe\Config\Collections\CachedConfigCollection->get('SilverStripe\\Co...', 'module_priority', 1) stevie-mayhew#16 /Users/joemadden/Sites/rumchata/vendor/silverstripe/framework/src/Core/Config/Config_ForClass.php(114): SilverStripe\Core\Config\Config_ForClass->get('module_priority', 1) stevie-mayhew#17 /Users/joemadden/Sites/rumchata/vendor/silverstripe/framework/src/Core/Manifest/ModuleManifest.php(232): SilverStripe\Core\Config\Config_ForClass->uninherited('module_priority') stevie-mayhew#18 /Users/joemadden/Sites/rumchata/vendor/silverstripe/framework/src/Core/BaseKernel.php(200): SilverStripe\Core\Manifest\ModuleManifest->sort() stevie-mayhew#19 /Users/joemadden/Sites/rumchata/vendor/silverstripe/framework/src/Core/CoreKernel.php(32): SilverStripe\Core\BaseKernel->bootManifests(true) stevie-mayhew#20 /Users/joemadden/Sites/rumchata/vendor/silverstripe/framework/src/Control/HTTPApplication.php(132): SilverStripe\Core\CoreKernel->boot(true) stevie-mayhew#21 /Users/joemadden/Sites/rumchata/vendor/silverstripe/framework/src/Control/Middleware/HTTPMiddlewareAware.php(65): SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(Object(SilverStripe\Control\HTTPRequest)) stevie-mayhew#22 /Users/joemadden/Sites/rumchata/vendor/silverstripe/framework/src/Control/HTTPApplication.php(130): SilverStripe\Control\HTTPApplication->callMiddleware(Object(SilverStripe\Control\HTTPRequest), Object(Closure)) stevie-mayhew#23 /Users/joemadden/Sites/rumchata/vendor/silverstripe/framework/src/Control/HTTPApplication.php(113): SilverStripe\Control\HTTPApplication->execute(Object(SilverStripe\Control\HTTPRequest), Object(Closure), true) stevie-mayhew#24 /Users/joemadden/Sites/rumchata/public/index.php(25): SilverStripe\Control\HTTPApplication->handle(Object(SilverStripe\Control\HTTPRequest)) stevie-mayhew#25 {main} thrown in /Users/joemadden/Sites/rumchata/vendor/marcj/topsort/src/CircularDependencyException.php on line 34 When we remove the After clause this then runs as expected.
Currently when set to After: framework/* we are getting an error whenever the MAILER_DSN environment variable is set. Updating this to just After: framework seems to resolve the issue. Error we were getting was the following - Fatal error: Uncaught MJS\TopSort\CircularDependencyException: Circular dependency found: modelascontrollercatchallroute->hasoneedit->mailer-dsn-env->hasoneedit in /vendor/marcj/topsort/src/CircularDependencyException.php:34 Stack trace: #0 /vendor/marcj/topsort/src/Implementations/BaseImplementation.php(57): MJS\TopSort\CircularDependencyException::create(Array) #1 /vendor/marcj/topsort/src/Implementations/ArraySort.php(63): MJS\TopSort\Implementations\BaseImplementation->throwCircularExceptionIfNeeded(Object(stdClass), Array) stevie-mayhew#2 /vendor/marcj/topsort/src/Implementations/ArraySort.php(75): MJS\TopSort\Implementations\ArraySort->visit(Object(stdClass), Array) stevie-mayhew#3 /vendor/marcj/topsort/src/Implementations/ArraySort.php(75): MJS\TopSort\Implementations\ArraySort->visit(Object(stdClass), Array) stevie-mayhew#4 /vendor/marcj/topsort/src/Implementations/ArraySort.php(75): MJS\TopSort\Implementations\ArraySort->visit(Object(stdClass), Array) stevie-mayhew#5 /vendor/marcj/topsort/src/Implementations/ArraySort.php(115): MJS\TopSort\Implementations\ArraySort->visit(Object(stdClass), Array) stevie-mayhew#6 /vendor/marcj/topsort/src/Implementations/ArraySort.php(98): MJS\TopSort\Implementations\ArraySort->doSort() stevie-mayhew#7 /vendor/silverstripe/config/src/Transformer/YamlTransformer.php(517): MJS\TopSort\Implementations\ArraySort->sort() stevie-mayhew#8 /vendor/silverstripe/config/src/Transformer/YamlTransformer.php(104): SilverStripe\Config\Transformer\YamlTransformer->getSortedYamlDocuments() stevie-mayhew#9 /vendor/silverstripe/config/src/Collections/MemoryConfigCollection.php(73): SilverStripe\Config\Transformer\YamlTransformer->transform(Object(SilverStripe\Config\Collections\MemoryConfigCollection)) stevie-mayhew#10 /vendor/silverstripe/framework/src/Core/Config/CoreConfigFactory.php(89): SilverStripe\Config\Collections\MemoryConfigCollection->transform(Array) stevie-mayhew#11 /vendor/silverstripe/framework/src/Core/Config/CoreConfigFactory.php(67): SilverStripe\Core\Config\CoreConfigFactory->createCore() stevie-mayhew#12 [internal function]: SilverStripe\Core\Config\CoreConfigFactory->SilverStripe\Core\Config\{closure}() stevie-mayhew#13 /vendor/silverstripe/config/src/Collections/CachedConfigCollection.php(139): call_user_func(Object(Closure)) stevie-mayhew#14 /vendor/silverstripe/config/src/Collections/CachedConfigCollection.php(88): SilverStripe\Config\Collections\CachedConfigCollection->getCollection() stevie-mayhew#15 /vendor/silverstripe/framework/src/Core/Config/Config_ForClass.php(81): SilverStripe\Config\Collections\CachedConfigCollection->get('SilverStripe\\Co...', 'module_priority', 1) stevie-mayhew#16 /vendor/silverstripe/framework/src/Core/Config/Config_ForClass.php(114): SilverStripe\Core\Config\Config_ForClass->get('module_priority', 1) stevie-mayhew#17 /vendor/silverstripe/framework/src/Core/Manifest/ModuleManifest.php(232): SilverStripe\Core\Config\Config_ForClass->uninherited('module_priority') stevie-mayhew#18 /vendor/silverstripe/framework/src/Core/BaseKernel.php(200): SilverStripe\Core\Manifest\ModuleManifest->sort() stevie-mayhew#19 /vendor/silverstripe/framework/src/Core/CoreKernel.php(32): SilverStripe\Core\BaseKernel->bootManifests(true) stevie-mayhew#20 /vendor/silverstripe/framework/src/Control/HTTPApplication.php(132): SilverStripe\Core\CoreKernel->boot(true) stevie-mayhew#21 /vendor/silverstripe/framework/src/Control/Middleware/HTTPMiddlewareAware.php(65): SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(Object(SilverStripe\Control\HTTPRequest)) stevie-mayhew#22 /vendor/silverstripe/framework/src/Control/HTTPApplication.php(130): SilverStripe\Control\HTTPApplication->callMiddleware(Object(SilverStripe\Control\HTTPRequest), Object(Closure)) stevie-mayhew#23 /vendor/silverstripe/framework/src/Control/HTTPApplication.php(113): SilverStripe\Control\HTTPApplication->execute(Object(SilverStripe\Control\HTTPRequest), Object(Closure), true) stevie-mayhew#24 /public/index.php(25): SilverStripe\Control\HTTPApplication->handle(Object(SilverStripe\Control\HTTPRequest)) stevie-mayhew#25 {main} thrown in /vendor/marcj/topsort/src/CircularDependencyException.php on line 34
Hi there,
I just started using hasoneedit and I faced something which might be a feature or an issue.
Therefore the mysterious title ;-)
I followed your instructions to setup the related object fields on a separate tab within the back-end
and as long as I fill the fields with values everything works like a charm:
The related object gets created the relation is there and the fields are filled.
Perfect!
But as far as I don't fill anything to the fields the object still is created and even worse
every time I update the one using the related object with hasoneedit another one gets added.
I found ways to work around the problem with empty fields (by adding some defaults or onBeforeWrite) and one could add some validation to catch empty fields also.
But right now I have the impression that the feature of creating the related object no matter what
may also a be an issue in some cases ?
Cheers
Lars
The text was updated successfully, but these errors were encountered: