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.

General Questions /

General questions about getting started with SilverStripe that don't fit in any of the categories above.

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

Tutorials seem broken


Go to End
Reply


13 Posts   2520 Views

Avatar
one_life

Community Member, 8 Posts

11 December 2009 at 6:55am

Hi All,

New to SilverStripe, and I am going through the awesome tutorials, but I am really stuck.

I am on the form turorial and the news tutorial, but I can't seem to get 2 things working.
1. My form for the poll will not work when trying to post the data to the DB, I am getting this error:

[User Error] Uncaught ReflectionException: Class text does not exist
POST /latique/home/BrowserPollForm

Line 89 in /Applications/MAMP/htdocs/latique/sapphire/core/Object.php

Source

80     * @param string $class the class name
81     * @param mixed $arguments,... arguments to pass to the constructor
82     * @return Object
83     */
84    public static function create() {
85       $args = func_get_args();
86       $class = self::getCustomClass(array_shift($args));
87       
88       if(version_compare(PHP_VERSION, '5.1.3', '>=')) {
89          $reflector = new ReflectionClass($class);
90          return $reflector->newInstanceArgs($args);
91       } else {
92          // we're using a PHP install that doesn't support ReflectionClass->newInstanceArgs()
93          
94          $args = $args + array_fill(0, 9, null);
95          return new $class($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7], $args[8]);

Note: Line 89 highlighted red.

And the RSS feed doesn't work either - keeps telling me that RSS is not allowed on the news page class, but I copied the tutorial exactly.
I am running this on MAMP OS X 10.6.2, PHP 5, MySql 5.0.41. Am I doing something wrong? I have re-written this part of the tutorial about 10 times and nothing gives. This is my first try at SilverStripe, and although I really like everything I am seeing, I am not sure I can go on using it if I am unable to follow the tutorials. I really want to use it though, this looks like the best CMS I have ever seen.

Any advice would be appreciated.

Avatar
Willr

Forum Moderator, 5513 Posts

11 December 2009 at 8:42am

And the RSS feed doesn't work either - keeps telling me that RSS is not allowed on the news page class, but I copied the tutorial exactly.

Ah I don't think the tutorials have been updated with the new $allowed_actions option. To get that to work just add this code at the top of your page type

static $allowed_actions = array(
'rss'
);

For your poll code do you might attaching your code?

Avatar
one_life

Community Member, 8 Posts

11 December 2009 at 11:14am

Hey, thanks for the reply Willr :)

Here is my poll code (homepage class)

class HomePage_Controller extends Page_Controller{
   
   // Poll
   function BrowserPollForm(){
   
      // create fields
      $fields = new FieldSet(
         new TextField('Name'),
         new OptionsetField('Browser','Your Favorite Browser', array(
            'Firefox' => 'Firefox',
            'Internet Explorer' => 'Internet Explorer',
            'Safari' => 'Safari',
            'Opera' => 'Opera',
            'Lynx' => 'Lynx'
         ))
      );
      
      // create actions
      $actions = new FieldSet(
         new FormAction('doBrowserPoll', 'Submit')
      );
      
      // validator
      $validator = new RequiredFields('Name','Browser');
      
      // return form
      return new Form($this, 'BrowserPollForm', $fields, $actions, $validator);
   }
   
   // process poll
   function doBrowserPoll($data, $form){
      $submission = new BrowserPollSubmission();
      $form->saveInto($submission);
      $submission->write();
      
      Session::set('BrowserPollVoted', TRUE);
      
      Director::redirectBack();
   }
   
   // show poll results
   function BrowserPollResults(){
      $submissions = DataObject::get('BrowserPollSubmission');
      $total = $submissions->count();
      
      $doSet = new DataObjectSet();
      foreach($submissions->groupBy('Browser') as $browser => $data){
         $percentage = (int) ($data->count() / $total * 100);
         $record = array(
            'Browser' => $browser,
            'Percentage' => $percentage
         );
         
         $doset->push(new ArrayData($record));
      }
      
      return $doset;
   }
}

?>

thanks in advance for any advice,

Avatar
one_life

Community Member, 8 Posts

11 December 2009 at 11:19am

no dice on the RSS either. getting this error:
Action 'rss' isn't allowed on class ArticleHolder_Controller"

<?
/*
   ArticleHolder - allows ArticlePages to go inside it
*/

class ArticleHolder extends Page{
   static $db                = array();
   static $has_one          = array();
   static $allowed_children    = array('ArticlePage');
   static $icon = "themes/tutorial/images/treeicons/news";
   static $allowed_actions = array('rss');
   
   /* RSS FEED */
   function rss() {
    $rss = new RSSFeed($this->Children(), $this->Link(), "The coolest news around");
    $rss->outputToBrowser();
   }
}

class ArticleHolder_Controller extends Page_Controller{
   function init() {
    RSSFeed::linkToFeed($this->Link() . "rss");   
    parent::init();
   }
}

?>

Avatar
Willr

Forum Moderator, 5513 Posts

11 December 2009 at 11:21am

You need to add the $allowed_actions to the controller - not the model as the controller deals with the URL requests.

Avatar
one_life

Community Member, 8 Posts

11 December 2009 at 11:23am

hahaha, thanks. I feel lazy now because that was so obvious. Thanks.

Avatar
one_life

Community Member, 8 Posts

11 December 2009 at 11:35am

Any red flags on my BrowserPoll code?

Avatar
Willr

Forum Moderator, 5513 Posts

11 December 2009 at 8:06pm

Could you post the full backtrace of your error. The actual line that is red in the error is misleading the *actual* cause of the error is usually traced to one of the options in the backtrace.

Go to Top