0

I want the user to view another page when the user clicks the button. inside the new page, some information is already fetched from the database. however, I declare everything but it still saying undefined variable.

form.blade.php

@foreach ($jobs as $job)
    <form action="{{route('job-apply', $job->$id)}}" method="post" enctype="multipart/form-data">
        {{ csrf_field() }}
        <div class="form-group form-group-material a-form-group">
            <label class="label">Full name</label>
            <input type="text" class="form-control" name="fullname" required />
        </div>
        <div class="form-group form-group-material a-form-group">
            <label class="label">Email</label>
            <input type="email" class="form-control" name="email" required />
        </div>
        <div class="form-group form-group-material a-form-group">
            <label class="label">Phone Number</label>
            <input type="tel" class="form-control" name="contact" required />
        </div>
        <div class="form-group form-group-material a-form-group">
            <label class="label">Address</label>
            <textarea class="form-control" name="address" cols="30" rows="3"></textarea>
        </div>
        <div class="form-group form-group-material a-form-group">
            <label class="label">Category</label>
            <input type=text class="form-control" name="category" disabled value="{{ $job->category }}" required />
        </div>
        <div class="form-group form-group-material a-form-group">
            <label class="label">Position</label>
            <input type="text" class="form-control" name="position" disabled value="{{ $job->position}}" required />
        </div>
        <div class="form-group control-file a-file">
            <input type="file" name="attachment" accept=".doc,.pdf" multiple />
            <div class="file-path-wrapper">
                <i class="lni lni-paperclip text-primary"></i>
                <input class="file-path form-control" placeholder="Add Attachment(.doc;.pdf)" />
            </div>
        </div>         
        <button class="btn btn-success" type="submit">Send</button>
    </form>
@endforeach

I have an error inside my form.blade

formcontroller

$jobs = Job::get();
$jobs=Job::where('id',$id)->first();
return view('candidate.apply');

Can someone help me because I am new to Laravel? and here is my main page where user click the button and redirect them to the form

<div class="col-md-2">
    <div class="slide-btn">
        <a href="{{ route('job-apply',$job->id) }}" class="btn btn-success">Apply</a>
    </div>
</div

jobcontroller

public function index()
{
    $jobs = Job::get();
    $company = Company::get();
    $menu = Menu::get();
    $current_menu = 4;
    // $jobs = Job::latest()->paginate(5);
    $jobs = Job::
        join('company', 'company.id', '=', 'jobs.company')
        ->get();
        
    return view('jobs.joblist', compact('jobs', 'company', 'menu', 'current_menu'));

}

public function create()
{
    return view('jobs.create');
}


public function store(Request $request)
{
    $request->validate([
    
        'company' => 'required',
        'category' => 'required',
        'position' => 'required',
        'description' => 'required',
        'salary_from' => 'required',
        'salary_to' => 'required',
        // 'status' => 'required|boolean',
    ]);


    Job::create($request->all());

    return redirect()->route('jobs.index');
}
public function show($id)
{
   
    return view('jobs.show', compact('job'));
}

public function edit($id)
{
    return view('jobs.edit', compact('job'));
}



public function update(Request $request, $id)
{
    $request->validate([
        'company' => 'required',
        'category' => 'required',
        'position' => 'required',
        'description' => 'required',
        'salary_from' => 'required',
        'salary_to' => 'required',
        
    ]);

    $jobupdate=Job::where('id',$id)->first();

    $jobupdate->company=$request->company;
    $jobupdate->category=$request->category;
    $jobupdate->position=$request->position;
    $jobupdate->description=$request->description;
    $jobupdate->salary_from=$request->salary_from;
    $jobupdate->salary_to=$request->salary_to;
    

    $jobupdate->save();

    // Job::update($request->all());

    return redirect()->route('jobs.index');
}


public function destroy(Job $job)
{
    $job->delete();

    return redirect()->route('jobs.index');
}

public function active(Request $request)
{
    // dd('text');
    $job = Job::where('company',$request->jobId)->first();
    $activeVal=request()->get('value');
    // dd($activeVal);
    if($activeVal == 1)
    {
        $activeVal=1;
    }else{
        $activeVal=0;
    }
    $job->status=$activeVal;
    $job->save();

    $output['success'] = 'success';

    return response()->json($output, 200);

}
kins
  • 61
  • 7

2 Answers2

1

You need to pass data to the view using the second parameter of view.

$jobs = Job::get();

return view('candidate.apply', ['jobs' => $jobs]);
jrcamatog
  • 1,341
  • 5
  • 14
0

Add the compact function in laravel on your return statement.


$jobs = Job::get();
    
    return view('candidate.apply', compact('jobs'));

It's VIN
  • 152
  • 7