2017-10-18 10 views
0

こんにちは、私はLaravel webappの開発中で、イベントbroacasting troug redisとsocket.ioを使用しています。すべて正常に動作していますが、イベントの応答としてレンダリングされたビューを返すようにしています。 ミイベントは次のようなものです:イベントブロードキャストの応答としてビューをレンダーする

<?php 

namespace App\Events; 

use Illuminate\Broadcasting\Channel; 
use Illuminate\Queue\SerializesModels; 
use Illuminate\Broadcasting\PrivateChannel; 
use Illuminate\Broadcasting\PresenceChannel; 
use Illuminate\Foundation\Events\Dispatchable; 
use Illuminate\Broadcasting\InteractsWithSockets; 
use Illuminate\Contracts\Broadcasting\ShouldBroadcast; 

class EventName implements ShouldBroadcast 
{ 
    use Dispatchable, InteractsWithSockets, SerializesModels; 

    /** 
    * Create a new event instance. 
    * 
    * @return void 
    */ 

    public $data; 

    public function __construct() 
    { 
     $this->data = array(
      'power'=> 'Funziona', 
      'view'=> view('dashboard.partials.messages')->render() 
     ); 
    } 

    /** 
    * Get the channels the event should broadcast on. 
    * 
    * @return \Illuminate\Broadcasting\Channel|array 
    */ 
    public function broadcastOn() 
    { 
     return ['test-channel']; 
    } 
} 

と私はページ上のレスポンスをレンダリングするためにこのコードを使用します。

<script src="/frontend/socket.io.js"></script> 
    <script> 
     var socket = io('http://1clickfashion.com:3002'); 
      socket.on("test-channel:App\\Events\\EventName", function(message){ 
      // increase the power everytime we load test route 
      alert(message.data.power); 
      $('#messages').html(''); 
      $('#messages').html(message.data.view); 

     }); 
    </script> 

「電源」警告が正しく表示されますが、ビューのように動作しません。よく別のビューでは、私はreturn response()->json($view)としてビューを使用しており、完璧に動作しています...誰かに同様の問題がありますか?

答えて

0

この問題で苦労している人は、ビューをControllerでレンダリングされた変数として渡すことで解決できます。このような。

$view = view('dashboard.partials.messages')->with('post', $post_c)->render(); 
     event(new \App\Events\Post($view)); 

イベントで:

public $data; 

    public function __construct($view) 
    { 
     $this->data = array(
      'view'=> $view 
     ); 
    } 
コントローラーで

関連する問題