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

cached output


Reply

268 Views

Avatar
Eldar

8 November 2012 at 5:57am (Last edited: 8 November 2012 6:06am), Community Member, 4 Posts

hello!
does anybody know how to solve the problem called "Side effects" (http://doc.silverstripe.org/framework/en/reference/templates)?

I need to call the function which increments variable on +1 each time. Du to cacheing effect, I can see on output only the first value of the variable and value is not growing next time.

Here are examples of my files:

FirstPage.php

<?php
class FirstPage extends Page {
public $j=10;
static $db = array(
   );
   
   static $has_one = array(
      'Photo1' => 'Image',
      'Photo2' => 'Image',
      'Photo3' => 'Image',
      'Photo4' => 'Image',
      'Photo5' => 'Image',
      'Photo6' => 'Image',
      'Photo7' => 'Image',
      'Photo8' => 'Image',
      'Photo9' => 'Image',
      'Photo10' => 'Image'
   );
   function getCMSFields() {
      $fields = parent::getCMSFields();
      $fields->addFieldToTab("Root.Content.Images", new ImageField('Photo1', 'Картинка #1 (660px * 380px)'));
      $fields->addFieldToTab("Root.Content.Images", new ImageField('Photo2', 'Картинка #2 (660px * 380px)'));
      $fields->addFieldToTab("Root.Content.Images", new ImageField('Photo3', 'Картинка #3 (660px * 380px)'));
      $fields->addFieldToTab("Root.Content.Images", new ImageField('Photo4', 'Картинка #4 (660px * 380px)'));
      $fields->addFieldToTab("Root.Content.Images", new ImageField('Photo5', 'Картинка #5 (660px * 380px)'));
      $fields->addFieldToTab("Root.Content.Images", new ImageField('Photo6', 'Картинка #6 (660px * 380px)'));
      $fields->addFieldToTab("Root.Content.Images", new ImageField('Photo7', 'Картинка #7 (660px * 380px)'));
      $fields->addFieldToTab("Root.Content.Images", new ImageField('Photo8', 'Картинка #8 (660px * 380px)'));
      $fields->addFieldToTab("Root.Content.Images", new ImageField('Photo9', 'Картинка #9 (660px * 380px)'));
      $fields->addFieldToTab("Root.Content.Images", new ImageField('Photo10','Картинка #10 (660px * 380px)'));

      return $fields;
   }
function countImages(){
$out="";
$k=0;
if ($this->Photo1ID > 0) ++$k;
if ($this->Photo2ID > 0) ++$k;
if ($this->Photo3ID > 0) ++$k;
if ($this->Photo4ID > 0) ++$k;
if ($this->Photo5ID > 0) ++$k;
if ($this->Photo6ID > 0) ++$k;
if ($this->Photo7ID > 0) ++$k;
if ($this->Photo8ID > 0) ++$k;
if ($this->Photo9ID > 0) ++$k;
if ($this->Photo10ID > 0) ++$k;
for ($i=1; $i<=$k; ++$i){
$out.='<a href="#">'.$i.'</a>';
}
return $out;
}

public function currentImage(){
$this->j++;
return $this->j;
}

}

class FirstPage_Controller extends Page_Controller {
}

FirstPage.ss

<% if Photo1 %>
$Photo1.URL $currentImage<br>
<% end_if %>

<% if Photo2 %>
$Photo2.URL $currentImage<br>
<% end_if %>

<% if Photo3 %>
$Photo3.URL $currentImage<br>
<% end_if %>

<% if Photo4 %>
$Photo4.URL $currentImage<br>
<% end_if %>

<% if Photo5 %>
$Photo5.URL $currentImage<br>
<% end_if %>

<% if Photo6 %>
$Photo6.URL $currentImage<br>
<% end_if %>

<% if Photo7 %>
$Photo7.URL $currentImage<br>
<% end_if %>

<% if Photo8 %>
$Photo8.URL $currentImage<br>
<% end_if %>

<% if Photo9 %>
$Photo9.URL $currentImage<br>
<% end_if %>

<% if Photo10 %>
$Photo10.URL $currentImage<br>
<% end_if %>

Output:
/assets/-/0.jpg 11
/assets/-/0.jpg 11
/assets/-/0.jpg 11
/assets/-/0.jpg 11

11,11,11... but I need 11,12,13...

thanks a lot for help!

P.S. silverstripe: 2.4.4