Looking at your code, your ajax call is executed when you change your price or quantity field but doesn't append the result to the form.
If you want to have the form send the total on submit, create a hidden input field total in your form in $.ajax().done().
$('form.calculator').append('<input type="hidden" name="total" value="' + [calculated total here] + '" />');
This way it will be submitted with the form.
Above answer looks good but as an aside, this is why people use things like angular, all the binding is done for you, might be worth a look if you do a lot of this sort of client side stuff.
flarpy said:
Above answer looks good but as an aside, this is why people use things like angular, all the binding is done for you, might be worth a look if you do a lot of this sort of client side stuff.
I tried to make this using Angular, but cannot start using Angular in Laravel. Can you pay attention to this thread http://laravel.io/forum/06-18-2016-angular-not-working-in-laravel-5
Very easy man, ajax have data
attribute use it to send some data, and after it get it from request; Example:
// ajax
$.ajax({
type: "POST",
url: {{ route('handle_ajax') }},
data: {data1: data1_value, data2: data2_value},
success: function(total) {
console.log(total) // here will incoming on acess ajax your result
}
});
// Example controller
public function handleAjax (Request $request)
{
dd($request->all());
// You will get your json as array data => [ 'data_1' => 'data1_value', 'data_2' => 'data2_value'];
// calculate and return your result as json and send emal;
// send mail using [Laravel Events](https://laravel.com/docs/5.2/events)
Event::fire(new SendEmailTotalOnResult($result));
return json_encode($result);
}
namespace App\Events;
class SendEmailTotalOnResult extends Event
{
private $result;
public function __construct($result)
{
$this->result= $result;
}
public function getResult()
{
return $this->result;
}
}
// Hanndle Event;
namespace App\Listeners;
use Illuminate\Contracts\Mail\Mailer;
class SendEmailEvent
{
protected mailer;
public function __construct(Mailer $mailer)
{
$this->mailer = $mailer;
}
public function handle(SendEmailTotalOnResult $event) {
$data = $event->getResult();
// send email etc.
// For more info read [Laravel doc](https://laravel.com/docs/5.2/mail)
$this->mailer->send('{your email tempalte}', ['data' => $data], function ($m) use ($user) {
// data will be sended to your template..
$m->from('[email protected]', 'Your Application');
$m->to($user->email, $user->name)->subject('Your Email!');
});
}
}
P.S: Может быть я не так понял вопрос но надеюсь что помог :) И не забудьте зарегистрировать ваш 'event' в \App\Providers\EventServiceProvider.php
я вообще не понял зачем нужен этот Event? у меня письма отправлялись и без него
Sign in to participate in this thread!
The Laravel portal for problem solving, knowledge sharing and community building.
The community