PHP Concrete 5 Передает переменные в Add.php

Я создаю новый блок, и я хочу передать определенную переменную экземпляру блока при добавлении.

В моем контроллере у меня есть следующее:

// declare the var public $hasMap = 0; public function add() { $this->set('hasMap', $this->generateMapNumber()); } 

Функция generateMapNumber () выглядит так:

 public function generateMapNumber() { return intval(mt_rand(1,time())); } 

В моей форме add.php у меня есть скрытое поле:

 <?php $myObj = $controller; ?> <input type="hidden" name="hasMap" value="<?php echo $myObj->hasMap?>" /> 

Когда я создаю новый блок, hasMap всегда равен 0 а скрытое входное значение всегда равно 0 . Какие-либо предложения? Спасибо!

— РЕДАКТИРОВАТЬ —

Из конкретной документации:

 // This... $controller->set($key, $value) // ... takes a string $key and a mixed $value, and makes a variable of that name // available from within a block's view, add or edit template. This is // typically used within the add(), edit() or view() function 

Solutions Collecting From Web of "PHP Concrete 5 Передает переменные в Add.php"

Вызов $this->set('name', $value) в блочном контроллере задает переменную этого имени с заданным значением в соответствующем файле add / edit / view – вам не нужно его получать изнутри объект контроллера. Поэтому просто вызовите <?php echo $hasMap; ?> <?php echo $hasMap; ?> в вашем файле add.php, а не $myObj->hasMap .

Это будет не одно и то же значение, потому что функция будет давать разные значения каждый раз, когда он вызывается.

Итак, вот решение. В контроллере …

 public $hasMap = 0; // no need for this: // public function add() { } public function generateMapNumber() { if (intval($this->hasMap)>0) { return $this->hasMap; } else { return intval(mt_rand(1,time())); } } 

А затем в файле add.php …

 <?php $myObj = $controller; ?> <input type="hidden" name="hasMap" value="<?php echo $myObj->generateMapNumber()?>" /> 

Он работает отлично. При добавлении создается новое число и при редактировании существующее число hasMap поля hasMap в db.

Спасибо за все входные данные. Надеюсь, это поможет кому-то еще!