Hi guys,
I want to generate a list of fields or forms in a loop like so:
LocationHolder.ss
<ul id="Locations">
<% control Locations %>
<li>
$Title $courseDropDown
</li>
<% end_control %>
</ul>
Here I am looping through Location models and calling Location.courseDropDown() to return a form for each location.
A form needs to be associated with a controller, so I have to define the function courseDropDown() twice. Once in the model and once the the controller, like so:
LocationPage.php
class LocationPage extends Page {
function courseDropDown() {
[...]
return new Form($this, 'courseDropDown', $fields, $actions);
}
}
class LocationPage_Controller extends Page_Controller {
function selectCourse($data, $form) {
Director::redirect('confirm');
}
function courseDropDown() {
[...]
return new Form($this, 'courseDropDown', $fields, $actions);
}
}
This seems to be a horrendous way to do things. Should I be generating the form in the LocationHolder instead? Something like...
LocationHolder.php
class LocationHolder extends Page {
[...]
}
class LocationHolder_Controller extends Page_Controller {
function formForAllChildren() {
$location_holder = DataObject::get_one("LocationHolder");
$locations = DataObject::get("LocationPage", "ParentID = $location_holder->ID", "", "", "");
//for each location
//build form
//end
return new Form();
}
}
Any advice or pointers appreciated.
Thanks,
Barry.