0

我正在创建一个新块,我想在添加时将定义的变量传递给块实例。

在我的控制器中,我有以下内容:

// 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如此。有什么建议么?谢谢!

- - 编辑 - -

从具体5文档:

// 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
4

3 回答 3

4

在块控制器中调用$this->set('name', $value)会在适当的添加/编辑/查看文件中设置具有给定值的该名称的变量——您不需要从控制器对象中获取它。所以只需调用<?php echo $hasMap; ?>您的 add.php 文件,而不是$myObj->hasMap.

于 2012-09-12T18:31:07.637 回答
0

它不会是相同的值,因为该函数每次调用时都会给出不同的值。

于 2012-09-12T07:00:20.357 回答
0

所以这是解决方案。在控制器...

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在添加时,会生成一个新号码,在编辑时,从数据库中的字段中提取现有号码。

感谢所有的投入。希望对其他人有所帮助!

于 2012-09-12T20:48:47.387 回答