gpt4 book ai didi

javascript - Yii2:将变量从 Controller 传递给javascript

转载 作者:搜寻专家 更新时间:2023-10-31 21:23:21 25 4
gpt4 key购买 nike

我正在为我的项目使用 Yii2 框架。我的 Controller 中有一个循环,这是代码

detailController.php:

public function actionResult() {
$connection = \Yii::$app->db;
$searchModel = new HeaderSearch();
$dataProvider = new ActiveDataProvider([
'query' => Header::find()->
where(['user_id' => Yii::$app->user->identity->id]),
'pagination' => [
'pageSize' => 24,
],
]);

$val = base64_decode($val);
$txt = base64_decode($txt);
$arrayVal = explode(",", $val);
unset($arrayVal[count($arrayVal) - 1]);
$arrayHeader = explode(",", $txt);
unset($arrayHeader[count($arrayHeader) - 1]);
$headerArray = null;
for ($i = 0; $i < count($arrayVal); $i++) {
$headerArray[$arrayVal[$i]] = $arrayHeader[$i];
}
$userId = Yii::$app->user->id;
$modelUser = User::find()->where(['id' => $userId])->one();
$parentId = $modelUser->parent_id;
$sql = $connection->createCommand("SELECT list_header FROM customize_header WHERE user_id=$userId");
$modelData = $sql->queryColumn();
$arrayData = json_decode($modelData[0]); //all data in array form
$countData = count($arrayData); // count rows of data except header row

$modelUser = User::find()->where(['id' => Yii::$app->user->id])->one();
$data = CustomizeHeader::find()->all();
$command = "DELETE FROM header WHERE user_id = '$userId'";
$query = Yii::$app->db->createCommand($command)->execute();

foreach ($arrayHeader as $value) {
$az = preg_replace('/^([0-9]{1,2})(_.*)/i', "\\2", $value);
$data = ltrim($az, '_');
$command = "INSERT INTO header(nama_header, user_id, parent_id) VALUES('$data', '$userId', '$modelUser->parent_id')";
$query = Yii::$app->db->createCommand($command)->execute();
}
$countHeader = count($arrayHeader); //count of selected header
$j = 0;
$point = floor($countData / 4);
$percent = 0;
for ($k = $j; $k < $countData; $k++) {
if($k % $point == 0 && $k > 0){ //Special Condition
$percent = $percent + 10; // Special Variable
}
$keyData = array_keys($arrayData[$k]);
$countKeyData = count($keyData);
for ($x = $k; $x <= $countData; $x++) {
foreach ($arrayHeader as $key => $value) {
$headerId[] = preg_replace('/^([0-9]{1,2})(_.*)/i', "\\1", $value);
}
$n[$k] = [];
for ($a = 0; $a < $countHeader; $a++) {
for ($b = 0; $b < $countKeyData; $b++) {
if ($headerId[$a] == $keyData[$b]) {
$n[$k][] = $arrayData[$k][$b];
}
}
}
}
}
//some code
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
'userId' => $userId,
]);

在上面的代码中,我有一个条件 if($k % $point == 0 && $k > 0) 我将评论标记为 Special Condition 包含一个变量 $percent,我将其注释标记为 Special Variable。每次条件为 true 时,我都想将此变量(包括值)发送到 upload.js

所以变量会在 Action 处理的过程中实时发送到upload.js

上传.js:

function displayResult() {
$('#progress').show();
var x = document.getElementById('bootstrap-duallistbox-selected-list_CustomizeHeader[list_header][]');
if (x.length == 24) {
var txt = "";
var val = "";
for (var i = 0; i < x.length; i++) {
txt += x[i].text + ",";
val += x[i].value + ",";
document.getElementById("progress").innerHTML="<div style=\"width:'percent';background-color:#ddd;\">&nbsp;</div>"; //Here
}
window.location = 'result?txt=' + btoa(txt) + '&val=' + btoa(val);
} else {
alert("At least 24 Headers!");
}
}

我使用这个脚本view.php中显示一个进度条,进度条的宽度(我设置的行代码注释标记为 Here) 取决于从 Controller 传递到此脚本的 $percent

那么如何在 Action 执行期间从 PHP Javascript 实时传递变量?

知道如何解决这个问题吗?谢谢 :)

最佳答案

在这种情况下,您应该在返回数组中传递正确的值,然后在 View 中管理正确的使用
例如:假设您需要的值在 $percent var

在你的 Controller 中

   return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
'userId' => $userId,
'percent' => $percent
]);

在您看来您可以检查是否正确使用

.......

<?php

if ( $percent > 0) {
echo "<div>". $percent . "</div>";
}
?>

.....

关于javascript - Yii2:将变量从 Controller 传递给javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41631800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com