0

I'm getting this error when making a broadcast. I'm working on Laravel (^9.11) and vue3. I broadcast a post detail after saving. Function here:

/**
 * New blacklist record
 */
public function newBlacklistRecord(Request $request)
{
    $requestData = $request->_value;

    DB::beginTransaction();
    try {
        $newBlacklistRecord = new BlackList();
        $newBlacklistRecord->who_created = auth()->user()->id;
        $newBlacklistRecord->tc_identity_number = $requestData['tc_identity_number'];
        $newBlacklistRecord->fullname = $requestData['fullname'];
        $newBlacklistRecord->phone = $requestData['phone'];
        $newBlacklistRecord->short_note = $requestData['short_note'];
        $newBlacklistRecord->get_sms = strval($requestData['get_sms']['enum_value']);
        $newBlacklistRecord->get_call = strval($requestData['get_call']['enum_value']);
        $newBlacklistRecord->confirm_status = strval(ConfirmStatus::pending);
        $newBlacklistRecord->save();

        broadcast(new BlacklistRequest($newBlacklistRecord, auth()->user()))->toOthers();

    } catch (Throwable $th) {
        DB::rollback();
        return response(
            [
                'status' => 'error',
                'message' => $th->getMessage(),
                'data' => $requestData,
            ],
            200
        );
    }
    DB::commit();

    return response(
        [
            'status' => 'success',
            'message' => __('successfully created'),
        ],
        200
    );
}

I read this post: Laravel: Unable to JSON encode payload. Error code: 5
I updated my method as follows:

/**
 * New blacklist record
 */
public function newBlacklistRecord(Request $request)
{
    $requestData = $request->_value;

    DB::beginTransaction();
    try {
        $newBlacklistRecord = new BlackList();
        $newBlacklistRecord->who_created = auth()->user()->id;
        $newBlacklistRecord->tc_identity_number = $requestData['tc_identity_number'];
        $newBlacklistRecord->fullname = $requestData['fullname'];
        $newBlacklistRecord->phone = $requestData['phone'];
        $newBlacklistRecord->short_note = $requestData['short_note'];
        $newBlacklistRecord->get_sms = strval($requestData['get_sms']['enum_value']);
        $newBlacklistRecord->get_call = strval($requestData['get_call']['enum_value']);
        $newBlacklistRecord->confirm_status = strval(ConfirmStatus::pending);
        $newBlacklistRecord->save();

        $blacklist = [
            'who_created' => GeneralHelper::detectAndFixEncoding($newBlacklistRecord->who_created),
            'tc_identity_number' => GeneralHelper::detectAndFixEncoding($newBlacklistRecord->tc_identity_number),
            'fullname' => GeneralHelper::detectAndFixEncoding($newBlacklistRecord->fullname),
            'phone' => GeneralHelper::detectAndFixEncoding($newBlacklistRecord->phone),
            'short_note' => GeneralHelper::detectAndFixEncoding($newBlacklistRecord->short_note),
            'get_sms' => GeneralHelper::detectAndFixEncoding($newBlacklistRecord->get_sms),
            'get_call' => GeneralHelper::detectAndFixEncoding($newBlacklistRecord->get_call),
            'confirm_status' => GeneralHelper::detectAndFixEncoding($newBlacklistRecord->confirm_status),
        ];

        broadcast(new BlacklistRequest($blacklist, auth()->user()))->toOthers();

    } catch (Throwable $th) {
        DB::rollback();
        return response(
            [
                'status' => 'error',
                'message' => $th->getMessage(),
                'data' => $requestData,
            ],
            (new FerisoftEnum)->getEnumValue('httpResponseStatusCode', 'ok')
        );
    }
    DB::commit();

    return response(
        [
            'status' => 'success',
            'message' => __('successfully created'),
        ],
        (new FerisoftEnum)->getEnumValue('httpResponseStatusCode', 'ok')
    );
}

The GeneralHelper::detectAndFixEncoding() method here is as follows:

/**
 * Detect and Fix Encoding
 */
public static function detectAndFixEncoding($content)
{
    $encoding = mb_detect_encoding($content, 'UTF-8, ISO-8859-1, WINDOWS-1252, WINDOWS-1251', true);
    return $encoding != 'UTF-8' ? iconv($encoding, 'UTF-8//IGNORE', $content) : $content;
}

Also this is my Event:

<?php

namespace App\Events;

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

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

    public $blacklist;
    public $user;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct($blacklist, $user)
    {
        $this->blacklist = $blacklist;
        $this->user = $user;
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new PrivateChannel('blacklist_request');
    }

    /**
     * Broadcast as
     */
    public function broadcastAs()
    {
        return 'blacklist_request';
    }
}

I'm listening on the front like this with Pusher:

window.Echo.private('blacklist_request').listen('.blacklist_request', (e) => {
    console.log(e);
});

I getting this: enter image description here
I don't know what's going on. Help.

cengsemihsahin
  • 921
  • 2
  • 8
  • 21

0 Answers0