Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 10.06.2016 10:27:55

jquery variable in controller

Здравствуйте друзья

хочу сделать на странице форму онлайн калькулятора
упрощенно будет выглядеть так

 
{!! Form::open(array('route' => 'order', 'class' => 'go-right calculator', 'files' => true)) !!}
@if(Session::has('message'))
    <div class="alert alert-info">{{Session::get('message')}}</div>
@endif
@if(Session::has('errors'))
	<div class="alert alert-info">@foreach($errors->all() as $error){{ $error }}<br>@endforeach
</div>
@endif

	<input name="calc" type="hidden" value="mycalc">

<div class="row">
	<div class="form-group col-xs-6 col-sm-4"><h4>Размеры</h4></div>
	<div class="form-group col-xs-3 col-sm-4">
		<input name="quantity" type="text" class="form-control">
		<label for="quantity">Кол-во</label>
	</div>
</div>
	<div class="col-xs-6"><h4>Цена</h4></div>
	<div class="col-xs-6"><div class="custom-dropdown custom-dropdown--white">
    	<select class="price custom-dropdown__select custom-dropdown__select--white" name="price">
        	<option value="2200" selected="selected">2200</option>
        	<option value="2800" >2200</option>
        	<option value="4000" >2200</option>
    	</select>
	</div></div>

		<div class="form-group col-xs-12 col-sm-6">
			<input id="name" name="name" type="text" class="form-control" required>
			<label for="name">Ваше имя *</label>
		</div>
		<div class="form-group col-xs-12 col-sm-6">
			<input id="phone" name="tel" type="tel" class="form-control" required>
			<label for="phone">Номер телефона *</label>
		</div>
		<div class="form-group col-xs-12 col-sm-6">
			<input id="email" name="email" type="email" class="form-control" required>
			<label for="email">Адрес электронной почты *</label>
		</div>
		<div class="form-group col-xs-12 col-sm-6">
			<textarea id="message" name="message" class="form-control"></textarea>
			<label for="message">Комментарии</label>
		</div>

  	  <div class="footer col-xs-12 col-sm-6">
        <button type="submit" class="btn btn-primary pull-right">Отправить заказ</button>
      </div>

<div class="result col-xs-12 col-sm-6"><h4>Итоговая спецификация</h4>
Стоимость: <span class="total">0</span>руб</div>

вот скрипт, который считает некоторое значение и выводит результат на странице в блок, имеющий класс .total

 
$(document).ready(function () {

  $('input[name="quantity"]').change(function () {
    calculation();
  });
  
  $('select.price').change(function () {
    calculation();
  });

  function calculation() {
    var total = $('input[name="quantity"]').val() * $('select.price option:selected').val();
    $('.result').children('.total').html( total );
    return false;

    $.ajax({
    type: "POST",
    url: "/path/to/my/page",
    data: {total:total },
    });

    };
});

насколько я понимаю последние строчки $.ajax при нажатии на кнопку отправить должны передавать переменную total в массив POST и соответственно я смогу обрабатывать эту переменную в контроллере, но почему-то этого не происходит

вызов dd($request->all()) выводит массив только со значениями quantity и price


	public function order(CalculatorRequest $request) 
	{
		$input = Input::all();
		$calc = $request->input('calc');

        //check if its our form
        if ( Session::token() !== Input::get( '_token' ) ) {
            return Response::json( array(
                'msg' => 'Несанкционированная попытка отправки письма'
            ) );
        }


		if ( $calc == 'mycalc' ) {
			$mailtemplate = 'emails.mycalc';
            $mailarray = array(
                'quantity' => $request->quantity,
            	'price' => $request->price,
            	'total' => $request->total,
            	'name' => $request->input('name'),
            	'tel' => $request->input('tel'),
            	'email' => $request->input('email'),
            	'user_message' => $request->input('message'),
            	);


		Mail::send($mailtemplate, $mailarray,

        	function($message) use ($request, $input)
    			{
        			$message->from('admin@mysyte.ru', $request->input('name') );
        			$message->to('info@mysyte.ru', 'info');
                    $message->setCc($request->input('email'), $request->input('name'));
        			$message->replyTo($request->input('email'), $request->input('name') );
        			$message->subject('Заказ с сайта');
				});
    //  return Redirect::back()->with('message', 'Ваше сообщение отправлено! Мы свяжемся с вами в ближайшее время для уточнения деталей заказа');
    // строку выше я пока заблокировал, чтобы видеть массив POST
      return Redirect::back()->with( dd($request->all()) );
        
	}
}

и в конце мне должно приходить письмо mycalc.blade.php

<p>
Кол-во: {{ $size }}<br>
Цена: {{ $price }}<br>
-------------------------<br>
Сумма: {{ $total }}<br>
-------------------------<br>
Имя: {{ $name }}<br>
Телефон: {{ $tel }}<br>
Email: {{ $email }}<br>
-------------------------<br>
Сообщение: {{ $user_message }}
</p>
<p>Это сообщение отправлено со страницы  $pagetitle  -  {{ $_SERVER['SERVER_NAME'] }} $pageurl</p>

вот переменную  $total   никак не получается получить

Не в сети

#2 10.06.2016 10:30:13

Re: jquery variable in controller

Куда он чего отправить должно? у тебя ж return стоит

$(’.result’).children(’.total’).html( total );
** return false; **

$.ajax({

Не в сети

#3 10.06.2016 10:40:50

Re: jquery variable in controller

закомментировал return false;  - не помогло

Не в сети

#4 10.06.2016 10:45:37

Re: jquery variable in controller

урл верный то?
url: «/path/to/my/page»,

смотри в консоли что куда уходит

Не в сети

#5 10.06.2016 11:00:15

Re: jquery variable in controller

там нету нихрена
total туда не попадает


Content-Type: multipart/form-data; boundary=---------------------------304341834022026
Content-Length: 1865

-----------------------------304341834022026
Content-Disposition: form-data; name="_token"

RNf1X3RBBpzmTY7kKQpybECb3vAuQkc5fhVksEEC
-----------------------------304341834022026
Content-Disposition: form-data; name="calc"

skinali
-----------------------------304341834022026
Content-Disposition: form-data; name="size_b1"

2000
-----------------------------304341834022026
Content-Disposition: form-data; name="size_h1"

600
-----------------------------304341834022026
Content-Disposition: form-data; name="rozetki"

2
-----------------------------304341834022026
Content-Disposition: form-data; name="otverstija"

1
-----------------------------304341834022026
Content-Disposition: form-data; name="krepej"

4
-----------------------------304341834022026
Content-Disposition: form-data; name="glass"

Прозрачное
-----------------------------304341834022026
Content-Disposition: form-data; name="led"

нет
-----------------------------304341834022026
Content-Disposition: form-data; name="dekor"

Фотопечать
-----------------------------304341834022026
Content-Disposition: form-data; name="dostavka"

в пределах МКАД
-----------------------------304341834022026
Content-Disposition: form-data; name="zamkad"


-----------------------------304341834022026
Content-Disposition: form-data; name="montazh"

нет
-----------------------------304341834022026
Content-Disposition: form-data; name="name"

Илья
-----------------------------304341834022026
Content-Disposition: form-data; name="tel"

1234567
-----------------------------304341834022026
Content-Disposition: form-data; name="email"

test@mail.ru
-----------------------------304341834022026
Content-Disposition: form-data; name="message"


-----------------------------304341834022026--

Не в сети

#6 10.06.2016 11:02:24

Re: jquery variable in controller

Это у тебя сабмит формы идет обычный не твой вызов аяксовый

Не в сети

#7 10.06.2016 12:24:55

Re: jquery variable in controller

А че делать что нормально было?
Я с этим Аяксом вообще ни разу не связывался. Поэтому вообще не пойму как быть

Не в сети

#8 10.06.2016 12:25:40

Re: jquery variable in controller

Изучать или забить и реализовать без аякса

Не в сети

#9 10.06.2016 15:45:35

Re: jquery variable in controller

ну, обычно подобные проблемы в асинхронности выполнения js кода. запрос ушёл, а ответ ловишь чем? пальцем ?.

возьми у меня реквестор https://github.com/h-zone/lib-appjs
+ там ещё полезного есть.
демо либо по ссылке в ридми либо запускай index (предварительно запусти bower install)

Не в сети

#10 10.06.2016 15:46:40

Re: jquery variable in controller

+ в моём реквесторе автоматом перехват ошибок соединения/сервера/приложения (приложение: сам генеришь)

Не в сети

Подвал раздела