Sir George
Sir George

Reputation: 433

Talk Messaging Package by Nahid

Here is my MessageController.php file

    class MessageController extends Controller
{
    protected $authUser;
    public function __construct()
    {
        $this->middleware('auth');
        Talk::setAuthUserId(Auth::user()->id);

        View::composer('partials.peoplelist', function($view) {
            $threads = Talk::threads();
            $view->with(compact('threads'));
        });
    }

    public function chatHistory($id)
    {
        $conversations = Talk::getMessagesByUserId($id);
        $user = '';
        $messages = [];
        if(!$conversations) {
            $user = User::find($id);
        } else {
            $user = $conversations->withUser;
            $messages = $conversations->messages;
        }

        return view('messages.conversations', compact('messages', 'user'));
    }

    public function ajaxSendMessage(Request $request)
    {
        if ($request->ajax()) {
            $rules = [
                'message-data'=>'required',
                '_id'=>'required'
            ];

            $this->validate($request, $rules);

            $body = $request->input('message-data');
            $userId = $request->input('_id');

            if ($message = Talk::sendMessageByUserId($userId, $body)) {
                $html = view('ajax.newMessageHtml', compact('message'))->render();
                return view('messages.conversations', compact('messages', 'user'));
            }
        }
    }

    public function ajaxDeleteMessage(Request $request, $id)
    {
        if ($request->ajax()) {
            if(Talk::deleteMessage($id)) {
                return response()->json(['status'=>'success'], 200);
            }

            return response()->json(['status'=>'errors', 'msg'=>'something went wrong'], 401);
        }
    }

i am trying to send a message from this form

<form action="{{url('/message_send')}}" method="post" id="talkSendMessage">
    <textarea name="message-data" id="message-data" placeholder ="Type your message" rows="3"></textarea>
    <input type="hidden" name="_id" value="{{@request()->route('id')}}">
    <button type="submit">Send</button>
</form>

but it doesnt work, an error saying NotFoundHttpException in RouteCollection.php line 161: and here is my routes.php file

Route::get('message/{id}', 'MessageController@chatHistory')->name('message.read');

Route::group(['prefix'=>'ajax', 'as'=>'ajax::'], function() {
   Route::post('message_send', 'MessageController@ajaxSendMessage')->name('message.new');
   Route::delete('message/delete/{id}', 'MessageController@ajaxDeleteMessage')->name('message.delete');
});

I dont understand where the error is coming from??

Upvotes: 0

Views: 402

Answers (1)

Imesha Sudasingha
Imesha Sudasingha

Reputation: 3570

You have missed the prefix you defined in your route group.

Route::group(['prefix'=>'ajax', 'as'=>'ajax::'], function() {

You have to add the prefix as well to the form's action,

<form action="{{url('/ajax/message_send')}}" method="post" id="talkSendMessage">

Upvotes: 1

Related Questions