This forum has moved to a new location and is in read-only mode. Please visit talk.octobercms.com to access the new location.
Basically I need to generate pages automatically based on what the user fills in a form, the problem is I can't figure out how to attach a component and fill a property in the component with a variable.
According to https://octobertricks.com/tricks/create-cms-page-with-translation-from-php-code I only need to do this
$page = new \Cms\Classes\Page([
'fileName' => $this->slug,
'title' => $this->name,
'url' => '/' . $this->slug,
'layout' => 'mylayout'
]);
$page->settings['components']['mycomponent']['variable_id'] = $this->id;
The page is created, but I never get the component attached, this is what shows in the .htm file:
title = "Page title"
url = "/pageslug"
layout = "mylayout"
==
I have also tried the following:
$page->components[] = [
'mycomponent' => [
'variable_id' => $this->id
]
];
But no luck... I should note, that I'm inside a model, in a function that is called after the model is saved. What am I doing wrong? Is this even possible? I considered making a function to directly write the component on the .htm files, but that will be my last resort.
mjauvin said:
$page->settings['components']['myComponent'] = ['variable_id' => $this->id] ;
Didn't work either, the page is still created without the component. I ended up using php to write to the *.htm file directly and place the component. Which works, but it's not the ideal way.
that's odd, it's working fine for me. Did you try to assign just an empty array like this?
$page->settings['components']['myComponent'] = [] ;
No, you're right, this does not get saved with the page... I'm sure this was working before when I wrote the trick. Let me investigate...
Looks like the correct syntax is this:
$page->attributes['myComponent'] = ['variable_id' => $this->id];
I've update the page on OctoberTricks.
Sorry for the confusion, I really thought I had properly tested this before.
mjauvin said:
Looks like the correct syntax is this:
$page->attributes['myComponent'] = ['variable_id' => $this->id];
I've update the page on OctoberTricks.
Sorry for the confusion, I really thought I had properly tested this before.
It is working! Thanks for the help, really appreciate it.
1-8 of 8