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