如何将Yii2模型属性传递给socket.io客户端js?

时间:2016-03-12 22:03:48

标签: socket.io yii2

我使用Yii2和socket.io发送通知。我有一个client.js文件,它应该向服务器发出新连接用户的id。 我的client.js中负责此操作的代码是:

socket.emit('AddId', '<?php $model->id ?>');//of course it does not work but I need smth like this.

那么如何将Yii2模型属性传递给socket.io client.js?

Client.js代码:

$( document ).ready(function() {

    var socket = io.connect('http://localhost:8890');

    socket.emit('AddId', '<?php $model->id ?>');

});

2 个答案:

答案 0 :(得分:0)

如果您想发送有关用户的信息,可以这样做

$( document ).ready(function() {

   var socket = io.connect('http://localhost:8890');

   socket.emit('AddId', '<?php  echo Yii::$app->user->id ?>');

});

答案 1 :(得分:0)

在我的index.php视图中的Yii2中,我写道:

$test = 'My text';//here could be any text data, model attributes etc
<script>
    var test = "<?php echo $test ?>";
</script>

在此更新之后,我能够在notification.js中使用变量(var test)。 notification.js也被添加到AppAsset.php中,如下所示:

public $js = [
       'js/notification.js'
       ];

notification.js文件:

$( document ).ready(function() {

   var socket = io.connect('http://localhost:8890');

   socket.emit('AddId', test);//test is a variable (var test) from index.php file

});