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've moved the forum!

Please use forum.silverstripe.org for any new questions (announcement).
The forum archive will stick around, but will be read only.

You can also use our Slack channel or StackOverflow to ask for help.
Check out our community overview for more options to contribute.

Form Questions /

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

Create new form generate this error 'getviewer'


Go to End


2137 Views

Avatar
int.gio

Community Member, 2 Posts

28 July 2010 at 10:40pm

Hi,

i create a new form with this code


<?php
  class IscrizioneNewsletter extends Form {

   function __construct($controller, $name) {
      $fields =  new FieldSet(

			// List your fields here
			new TextField("FirstName", "First name"),
			//new TextField("Surname"),
			new EmailField("Email", "Email address"),
			new CheckboxField("privacy","privacy")

		);

      $actions = new FieldSet(
         new FormAction('IscrizioneNewsletter', 'IscrizioneNewsletter')
      );
      
      $requiredFields = new RequiredFields("FirstName","privacy","Email"

		  );

      parent::__construct($controller, $name, $fields, $actions);
   }

   function forTemplate() {
      return $this->renderWith(array(
         $this->class,
         'Form'
      ));
   }
	function IscrizioneNewsletter($data, $form) {

		$member = new Member();
		$form->saveInto($member);
		// See if the user email is already in the system
		if(DataObject::get_one('Member', "Email = '".$member->getField('Email')."'")) {
		  Director::redirect('registration-failed-email-exists/');
		}else{
			$member->write();
  		if($group = DataObject::get_one('Group', "ID = $this->defaultGroupID")) {

  			$member->Groups()->add($group);
  			Director::redirect('thanks-for-registering/');
  		}else{
  			Director::redirect('registration-failed/');

  		}

		}

	}

}
 ?>

i call this form in the controller page

  class HomePage_Controller extends Page_Controller{
    
        ...

	function IscrizioneNewsletter() {
		return new IscrizioneNewsletter($this,'IscrizioneNewsletter');
	}

  }

when i click the submit button i get this

[User Error] Uncaught Exception: Object->__call(): the method 'getviewer' does not exist on 'IscrizioneNewsletter'
POST /test/giovanni/projects/siriaonline.com/trunk/home/IscrizioneNewsletter

Line 724 in /var/server/www/htdocs/test/giovanni/projects/siriaonline.com/trunk/sapphire/core/Object.php
Source

715 				
716 				default :
717 					throw new Exception (
718 						"Object->__call(): extra method $method is invalid on $this->class:" . var_export($config, true)
719 					);
720 			}
721 		} else {
722 			// Please do not change the exception code number below.
723 			
724 			throw new Exception("Object->__call(): the method '$method' does not exist on '$this->class'", 2175);
725 		}
726 	}
727 	
728 	// -----------------------------------------------------------------------------------------------------------------
729 	
730 	/**

Trace

    * Object->__call(getViewer,Array)
    * IscrizioneNewsletter->getViewer(IscrizioneNewsletter)
      Line 155 of Controller.php
    * Controller->handleRequest(SS_HTTPRequest)
      Line 199 of ContentController.php
    * ContentController->handleRequest(SS_HTTPRequest)
      Line 67 of ModelAsController.php
    * ModelAsController->handleRequest(SS_HTTPRequest)
      Line 283 of Director.php
    * Director::handleRequest(SS_HTTPRequest,Session)
      Line 127 of Director.php
    * Director::direct(/home/IscrizioneNewsletter)
      Line 127 of main.php

Can anyone help me?

Thanks!!!