PHP変数の値をJavaScriptに渡そうとしています。jsコードを同じphpビューファイルに入れるとできます。しかし、デバッグやさらなる開発が非常に面倒になるため、jsコードをphp内に入れたくありません。
$this->registerJsFile('/js/myJs.js', [JqueryAsset::className()]);
助けてください。
PHPからjsへの変数の受け渡しには、次を使用できます
Yii::$app->view->registerJs('var max = "'. $maxMinCost['max'].'"', \yii\web\View::POS_HEAD);
別のオプション (でデータを渡す場合と比較して) は、HTML 要素にregisterJs
いくつかの属性を追加することです。data
特定の要素が特定の対応するものを表す場合、これは非常に多くの場合意味があります。例:
<table>
<?php foreach($items as $item) { ?>
<tr data-item-id="<?= $item->id ?>">
<td>something...</td>
</tr>
<?php } ?>
</table>
次に、JS コードを別の (生成されていない) ファイルに入れることができます。
data
属性と使用法に関するいくつかのドキュメントはMDNにあります。
バージョン 2.0.14 以降、 registerJsVar() が利用可能になりました。
$this->registerJsVar ('modalTitle', Yii::t('app', 'Update details' ), View::POS_BEGIN);
外部 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 に変数とデータを渡す方法は? 」 を参照してください。