Jump to content

Recommended Posts

Posted

Hey guys,

I'm having a hard time troubleshooting this one: my multilanguage fields save data outside repeaters, but inside any repeater they just won't save, unlike all other fieldtypes.

What I've tried so far:

  • Recreating the repeater matrix from scratch — problem persists
  • Using multi-language fields on a regular repeater instead of a repeater matrix — problem persists
  • Removing all language support modules and reinstalling — problem persists
  • If I change the multi-language fields into single-language types, they start saving right, but if I change them back to multi-language, the problem persists.
  • Changing the multilanguage field via API `$page->repeaterfield[0]->setAndSave("title","Meow")` — works, but I need it in the admin form

 To try to figure out the problem I did this:

$wire->addHookAfter("Pages::saved(template=repeater_content)", function($event) {
    $page = $event->arguments(0);
    $changes = $event->arguments(1);
    $values = $event->arguments(2);
    bdb($page);
    bdb($changes);
    bdb($values);
});

The hook is only triggered when I also change a non-multi-language field.

On the dumped $page the title field is there like I changed it in the form. But something must happen after Page::saved that restores it back to what it was.

 Where would you look next to find the solution...? Thank you very much for your help!

Posted

I really can't tell if this is a bug or feature, to be honest.

I talked about this with @ryan and he wasn't sure either back when I found this issue.
And yes, that was about at least 2 years back.

So... right now... this seems only to affect PW-sites that were single-language and then were migrated to multi-language support. Which is probably the case here too. I almost never stumble over this, due to my profiles I use for new projects, but YES... it could and will be... kind of a show-stopper in a setup once in a while - as we see here.

But here is the "easy fix"... never use title somewhere else outside of default templates.

I know it sounds weird as re-using fields is such a common task nowadays (for good), but... I learned about the years that title is more or less not a field, rather a tool to define name-based default IDs (besides the regular page ID). I see the title field as something like fkTitle (foreignKeyTitle) which I used to use in Oracle DBs back in my agency times. Way less strict and only applicable with additional selector-queries, but... it's close enough in my use-cases.

In my setups I ALWAYS use headline, subline, topline and similar fields instead of title. Especially in RepeaterMatrix to create unique jumplinks.

tl;dr (my definition for the title-field)

Use title in your templates but never in an ongoing or extended way like using it in RepeaterMatrix Blocks or similar. It's a system field for a reason. Almost like a human-readable ID. That how I handle it.

  • Thanks 1

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...