8

PHP変数の値をJavaScriptに渡そうとしています。jsコードを同じphpビューファイルに入れるとできます。しかし、デバッグやさらなる開発が非常に面倒になるため、jsコードをphp内に入れたくありません。

$this->registerJsFile('/js/myJs.js', [JqueryAsset::className()]);

助けてください。

4

4 に答える 4

8

PHPからjsへの変数の受け渡しには、次を使用できます

 Yii::$app->view->registerJs('var max = "'. $maxMinCost['max'].'"',  \yii\web\View::POS_HEAD);
于 2014-09-08T07:24:06.577 に答える
4

別のオプション (でデータを渡す場合と比較して) は、HTML 要素にregisterJsいくつかの属性を追加することです。data特定の要素が特定の対応するものを表す場合、これは非常に多くの場合意味があります。例:

<table>
    <?php foreach($items as $item) { ?>
    <tr data-item-id="<?= $item->id ?>">
        <td>something...</td>
    </tr>
    <?php } ?>
</table>

次に、JS コードを別の (生成されていない) ファイルに入れることができます。

data属性と使用法に関するいくつかのドキュメントはMDNにあります。

于 2015-04-10T07:47:15.347 に答える
4

バージョン 2.0.14 以降、 registerJsVar() が利用可能になりました。

$this->registerJsVar ('modalTitle', Yii::t('app', 'Update details' ), View::POS_BEGIN);
于 2020-05-19T10:34:42.510 に答える
3

外部 JS スクリプトを使用する前に、インライン JS スクリプトを使用します。

$inlineScript = 'var key = ' . $value . ';';
$this->registerJs($inlineScript, View::POS_HEAD, 'my-inline-js');

$this->registerJsFile('/js/myJs.js', [
    'depends' => [...],
    'position' => View::POS_BEGIN);

位置定数は、上記の場合の「キー」などの JS 変数が外部スクリプトの前に定義されるようにするために使用されます。

PHP 変数を Ajax などの外部 JS スクリプトに渡す方法は他にもあります。詳細については、「 PHP から JavaScript に変数とデータを渡す方法は? 」 を参照してください。

于 2015-01-22T07:56:38.367 に答える