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; ?>.php の代わりに 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 に答える