buttonTitle = $buttonTitle; $this->title = $title; $this->name = is_null( $name ) ? 'the-form' : $name; $this->action = '?'; $this->method = 'POST'; } public function buttonTitle( ) { return $this->buttonTitle; } public function name( ) { return $this->name; } public function title( ) { return $this->title; } public function action( ) { return $this->action; } public function method( ) { return $this->method; } public function cancelURL( ) { return $this->cancelURL; } public function successURL( ) { return $this->successURL; } public function fields( ) { return array_values( $this->fields ); } public function field( $name ) { assert( array_key_exists( $name , $this->fields ) ); return $this->fields[ $name ]; } public function controllers( ) { return $this->controllers; } public function setAction( $action ) { $this->action = $action; return $this; } public function setMethod( $method ) { $this->method = $method; return $this; } public function setURL( $url ) { $this->cancelURL = $this->successURL = $url; return $this; } public function setCancelURL( $url ) { $this->cancelURL = $url; return $this; } public function setSuccessURL( $url ) { $this->successURL = $url; return $this; } public function addField( Field $field ) { assert( ! array_key_exists( $field->name( ) , $this->fields ) ); $this->fields[ $field->name( ) ] = $field; return $this; } public function addSeparator( ) { $i = 0; while ( array_key_exists( "sep$i" , $this->fields ) ) { $i ++; } $this->fields[ "sep$i" ] = null; return $this; } public function addController( Controller $controller ) { if ( is_a( $controller , 'FormAware' ) ) { $controller->setForm( $this ); } array_push( $this->controllers , $controller ); return $this; } public function controller( ) { return Loader::Ctrl( 'form' , $this ); } public function view( ) { $box = Loader::View( 'box' , $this->title , Loader::View( 'form' , $this ) ) ->setClass( 'form' ); if ( $this->cancelURL !== null ) { $box->addButton( BoxButton::create( Loader::Text( 'Cancel' ) , $this->cancelURL ) ->setClass( 'form-cancel' ) ); } return $box; } } interface FormAware { public function setForm( Form $form ); }