Как использовать переменные функции с другой функцией - PullRequest
0 голосов
/ 11 июня 2018

Я создаю веб-сайт.На этом веб-сайте я создал регистрационную форму.Пользователь может вводить данные, и когда пользователь нажимает кнопку «Отправить», все данные сохраняются в базе данных.Вот моя функция saveInvoice.На моей странице просмотра я использовал saveInvoice в качестве своего действия.Затем я использовал входные данные запроса в этой функции.

public function saveInvoice(Request $request)
    {
        if (Auth::user())
        {
            $settings = Setting::find(1);
            $invoiceNo=$settings->invoiceprefix.''.str_pad($settings->invoiceno, $settings->invoicepadding, 0, STR_PAD_LEFT);

            $invoice= new Invoice();
            $invoice->invoicereference=$invoiceNo;
            $invoice->firstname=$request->fname;
            $invoice->lastname=$request->lname;

            $invoice->save();

            $settings->invoiceno=$settings->invoiceno+1;
            $settings->update();

            if($invoice == null){
                return redirect()->back()->with('msg','invalid request');
            }
            else{
                return redirect()->route('invoice.preview',$invoiceNo);
            }
        }

    }

Но теперь я хочу создать еще одну функцию под названием sendemail.В этой функции я хочу использовать пользовательские данные, которые пользователь заполнил в этой регистрационной форме.Могу ли я получить эти входные данные запроса из этой выше функции или есть другой метод ??

public function sendemail(Request $request) {
$invoiceNo = $request->input('invoiceNo');
            $fname = $request->input('fname');
            $Qty = $request->input('Qty');
            $price = $request->input('price');
            $sendemail = $request->input('email');

            $data = [];
            $data['invoiceNo'] = $invoiceNo;
            $data['fname'] = $fname;
            $data['Qty'] = $Qty;
            $data['price'] = $price;
            $data['sendemail'] = $sendemail;

            Mail::send(['text' => 'mail'], $data, function ($message) use ($data) {
                $message->to($data["sendemail"], 'TicketBooker')->subject
                ('CheapEfares Air Ticket');
                $message->from('kistlakall@gmail.com', 'CheapEfares');
            });
}

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Вы можете просто вызвать этот метод из своего кода, а по возвращении этого метода вы можете настроить свой ответ.

$this->sendemail($request); // $this just because it is on same controller or basecontroller

// For example
public function saveInvoice(Request $request){
    .
    .
    .
    $sendMail = $this->sendemail($request);
    if($sendMail == 'success'){
        // On success
    } else {
        // On Error 
    }
} 
public function sendemail(Request $request) {
    .
    .
    .
    return 'success';
}
0 голосов
/ 11 июня 2018

Вы можете вызвать функцию sendemail в функции saveInvoice, а затем передать объект Request в функцию sendemail, например

public function saveInvoice(Request $request){
//save invoice code

if($invoice == null){
  return redirect()->back()->with('msg','invalid request');
}
else{
  $this->sendemail(Request $request);
  return redirect()->route('invoice.preview',$invoiceNo);
}
}

Я предполагаю, что обе функции находятся в одном классе или один класс расширяет другой класс

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...