Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

We're retiring the forums!

The SilverStripe forums have passed their heyday. They'll stick around, but will be read only. We'd encourage you to get involved in the community via the following channels instead:

Form Questions /

Moderators: martimiz, Sean, Ed, biapar, Willr, Ingo, swaiba

generate multiple forms or fields on a page

Go to End



Community Member, 48 Posts

20 February 2009 at 5:42pm

Hi guys,

I want to generate a list of fields or forms in a loop like so:

<ul id="Locations">
<% control Locations %>
		$Title $courseDropDown
<% end_control %>

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:


class LocationPage extends Page {

	function courseDropDown() {
		return new Form($this, 'courseDropDown', $fields, $actions);	

class LocationPage_Controller extends Page_Controller {
	function selectCourse($data, $form) {				
	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...


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

		return new Form();


Any advice or pointers appreciated.