Saya mencoba membuat Notifikasi Laravel. Saya membuat tabel bernama send_profiles. Ketika seorang Kandidat masuk dan mencari pekerjaan, dia dapat mengirim profil pekerjaannya ke pemberi kerja. Semua data itu ada dalam tabel bernama job_seeker_profiles. Saya sedang mengembangkan jenis aplikasi Pencarian Kerja.

Saya membuat kelas Notifikasi baru bernama SendProfile.php:

public function toDatabase($notifiable)
    {
        $user = Auth::user();

        return [
            'user_id' => Auth::user()->id,
            'employer_profile_id' => DB::table('send_profiles')->where('user_id', $user->id)->orderBy('id', 'desc')->offset(0)->limit(1)->get('employer_profile_id'),
        ];
    }

Saya tidak tahu cara terbaik untuk melakukan ini, tetapi bagaimanapun ini adalah rute saya. web.php:

Route::get('/admin/job-seeker/search/employer/{employerId}/post-a-job/{jobPostId}/send-profile', 'AdminEmployerJobPostsController@sendProfile')->name('admin.employer.post-a-job.show.send-profile')->middleware('verified');

AdminEmployerJobPostsController.php:

public function sendProfile($employerId, $jobPostId)
{

    $user = Auth::user();

    $jobSeekerProfile = JobSeekerProfile::all()->where('user_id', $user->id)->first();

    $employerProfile = EmployerProfile::limit(1)->where('id', $employerId)->get();

    $jobPosts = JobPosts::all();

    $jobPost = JobPosts::findOrFail($jobPostId);

    $user->sendProfile()->create();

    $employerProfile->notify(new SendProfile());

    return back()->with('send-profile', 'Your Profile has been sent!');

}

Ini adalah kesalahan saya:

Parameter yang diperlukan tidak ada untuk [Rute: admin.employer.post-a-job.show.send-profile] [URI: admin/job-seeker/search/employer/{employerId}/post-a-job/{jobPostId}/ Kirim profil]. (Lihat: /Applications/XAMPP/xamppfiles/htdocs/highrjobs/resources/views/admin/employer/post-a-job/show.blade.php)

Show.blade:

@extends('layouts.admin')

@section('pageTitle', 'Create a User')

@section('content')

    @include('includes.job_seeker_search_employers')

    <!-- The Modal -->
    <div class="modal" id="myModal5">
        <div class="modal-dialog">
            <div class="modal-content">

                <!-- Modal Header -->
                <div class="modal-header">
                    <h4 class="modal-title">{{ $jobPost->job_title }}</h4>
                    <button type="button" class="close" data-dismiss="modal">&times;</button>
                </div>

                <!-- Modal body -->
                <div class="modal-body">
                    <h5>{{ $jobPost->job_description }}</h5>
                </div>

                <!-- Modal footer -->
                <div class="modal-footer">

                    {!! Form::open(['method'=>'POST', 'action'=>'AdminEmployerJobPostsController@sendProfile', 'files'=>true, 'style'=>'width: 100%;']) !!}

                    <div class="form-group">
                        {!! Form::hidden('user_id', Auth::user()->id, ['class'=>'form-control']) !!}
                    </div>

                    <div class="form-group">
                        {!! Form::hidden('employer_profile_user_id', $employerProfile->id, ['class'=>'form-control']) !!}
                    </div>

                    <div class="row">
                        <div class="col">
                            {!! Form::button('Back', ['class'=>'btn btn-danger btn-block float-left', 'data-dismiss'=>'modal']) !!}
                        </div>
                        <div class="col">
                            {!! Form::submit('Send Profile', ['class'=>'btn btn-primary btn-block float-right']) !!}

                            {!! Form::close() !!}
                        </div>
                    </div>
                    <br><br><br><br>

                </div>

            </div>
        </div>
    </div>

@stop

Jika saya menghapus formulir, setidaknya saya tidak mendapatkan kesalahan. Jadi saya benar-benar berpikir ada masalah dengan formulir.

Agar jelas, yang saya inginkan hanyalah memasukkan user_id dan employer_profile_id ke dalam tabel send_profiles dan kemudian mengirim pemberitahuan ke perusahaan.

0
Ryan Sacks 13 Maret 2020, 23:18

1 menjawab

Jawaban Terbaik

Rute Anda menentukan permintaan GET ke URL yang berisi parameter tertentu:

/admin/job-seeker/search/employer/{employerId}/post-a-job/{jobPostId}/send-profile

Formulir Anda menggunakan AdminEmployerJobPostsController@sendProfile sebagai tindakan; ini diterjemahkan ke dalam URL dengan mencari daftar rute, dan memilih apa yang menurut Laravel paling tepat. Karena Anda belum memasukkan apa pun untuk mengisi parameter employerId dan jobPostId, Anda mendapatkan kesalahan ini saat URL dibuat.

Bahkan jika Anda bisa mendapatkan URL yang dihasilkan, Anda akan memiliki masalah karena formulir Anda mengirimkan permintaan POST ke rute GET ini.

Yang perlu Anda lakukan adalah memastikan Anda memiliki rute POST yang menunjuk ke metode pengontrol baru. Anda tidak akan meneruskan parameter apa pun ke rute ini di URL, jadi metode pengontrol Anda biasanya hanya akan menerima objek Request sebagai parameter. Hal kedua yang harus Anda lakukan adalah menentukan target formulir Anda dengan lebih akurat. Berikan nama rute alih-alih membuatnya menebak.

public function sendProfile(Request $request)
{
    // you get this here so no need to pass it in the form
    $user = Auth::user();

    // your relations should be set up so you don't need to do this:
    // $jobSeekerProfile = JobSeekerProfile::all()->where('user_id', $user->id)->first();
    // instead do this:
    $jobSeekerProfile = $user->jobSeekerProfile();

    // a simple find is much neater than what you had
    $employerProfile = EmployerProfile::find($request->job_seeker_profile_user_id);

    // not sure why this is here?
    $jobPosts = JobPosts::all();

    // also your form isn't passing a job post ID
    $jobPost = JobPosts::findOrFail($request->jobPostId);

    // ??? creating an empty something?
    $user->sendProfile()->create();

    $employerProfile->notify(new SendProfile());

    return back()->with('send-profile', 'Your Profile has been sent!');

}
1
miken32 13 Maret 2020, 22:06