В laravel в контроллере передайте переменную одной функции другой функции - PullRequest
0 голосов
/ 01 мая 2019

Я кодирую в Laravel, Как я могу передать переменную одной функции другой функции в Controller,

В файле контроллера у меня есть 2 функции, подобные этой

public function hiringEmployee(Request $request)
{
    $hireEmployee = new EmployeeHire();
    $hireEmployee->candidateName = $request->get('candidateName');

    $file = $request->file('file');
    $name = $file->getClientOriginalName();
    $file->move('uploads/cv', $name);

    $hireEmployee->file = $name;
    $hireEmployee->save();

    return redirect('list-candidate');
}


public function assignInterview(Request $request, $id)
{
    $assignInterview = EmployeeHire::find($id);
    $interview = $request->get('interview');
    $assignto = $request->get('assignto');
    $dateTime = $request->get('dateTime');
    $note = $request->get('note');

    $interviewDetails = ([
        'interview' => $interview,
        'assign_to' => $assignto,
        'date_time' => $dateTime,
        'note'      => $note,
    ]);

    $assignInterview->interview_details = $interviewDetails;
    $assignInterview->save();


    Mail::send('emails.hireemployee', ['candidateName' => $candidateName], function ($message) use ($assignto, $name) {
        $message->subject('Interview For New Candidate!');
        $message->from('hrm@wcg.com', 'HRM');
        $message->to($mail);
        $message->attach('uploads/cv/'.$name);
    });

    return redirect('list-candidate');
}

Я хочу использовать $candidateName и $name в функции assignInterview() из функции hiringEmployee().

Как я могу это сделать?

Ответы [ 3 ]

3 голосов
/ 01 мая 2019

Вы не сможете использовать $name и $candidateName непосредственно из другой функции, поскольку они выглядят так, как будто они предназначены для двух разных запросов, однако, похоже, что вы сохраняете эти данные в базу данных, когда вывы создаете новый EmployeeHire в вашем hiringEmployee() методе, поэтому у вас уже должен быть доступ к этой информации в вашем assignInterview() методе:

$assignInterview = EmployeeHire::find($id); // this is where you loading the model

$candidateName = $assignInterview->candidateName;
$name  = $assignInterview->file;
1 голос
/ 01 мая 2019

В вашей ситуации вы можете использовать два подхода:

# 1

Используйте переменную сеанса, как показано ниже:

Session::put('candidateName', $candidateName);

Тогда:

$value = Session::get('candidateName');

# 2

Использовать атрибут класса:

class acontroller extends Controller
{    
    private $classCandidateName;

}
0 голосов
/ 01 мая 2019

Вы можете попробовать что-то вроде этого:

public function hiringEmployee(Request $request)
{
    $hireEmployee = new EmployeeHire();
    $hireEmployee->candidateName = $request->get('candidateName');

    $file = $request->file('file');
    $name = $file->getClientOriginalName();
    $file->move('uploads/cv', $name);

    $hireEmployee->file = $name;
    $hireEmployee->save();

    return redirect('list-candidate');
}


public function assignInterview(Request $request, $id)
{
    $assignInterview = EmployeeHire::find($id);
     if(is_null($assignInterview)){
         return redirect()->back()->withErrors(['Error message here']);
     }

    $interviewDetails = ([
        'interview' => $request->get('interview'),
        'assign_to' => $request->get('assignto'),
        'date_time' => $request->get('dateTime'),
        'note'      => $request->get('note'),
    ]);

    $assignInterview->interview_details = $interviewDetails;
    $assignInterview->save();


    Mail::send('emails.hireemployee', ['candidateName' => $assignInterview->candidateName], function ($message) use ($assignto, $assignInterview->file) {
        $message->subject('Interview For New Candidate!');
        $message->from('hrm@wcg.com', 'HRM');
        $message->to($mail);
        $message->attach('uploads/cv/'.$assignInterview->file);
    });

    return redirect('list-candidate');
}

Пожалуйста, вы должны быть осторожны с find ($ id).Если это ноль, вы получите ошибку.

Веселитесь!

...