Ciao a tutti, mi chiamo Matteo e questo è il mio primo post su Laravel Italia.
Premetto che mi sto cimentando da poco con Laravel, parto dalla 5.4, tutto molto affascinante ma molto complicato per me.
Veniamo al dunque, il problema è il seguente:
Ho un form che al submit deve portarmi al pagamento con PayPal, ma prima di andare su PayPal devo salvare i data in DB.
Da quello che ho trovato tra le varie ricerche, la soluzione è Ajax, così ho impostato il tutto come segue:
Questa è la mia view: create.blade.php
{!! Form::open(['url' => 'https://www.paypal.com/cgi-bin/webscr', 'files' => true]) !!}
// Dati per PayPal
{{ Form::hidden('cmd', '_xclick') }}
{{ Form::hidden('business', 'xxxx-facilitator@xxxx.it') }}
{{ Form::hidden('item_name', 'Name item') }}
{{ Form::hidden('currency_code', 'USD') }}
{{ Form::hidden('amount', '1.00') }}
{{ Form::hidden('no_shipping', '1') }}
// Dati da salvare in DB
{{ Form::text('name', null, ['class' => 'form-control j-field-name', 'required']) }}
{{ Form::text('url', null, ['class' => 'form-control j-field-url', 'required']) }}
{{ Form::file('image',['class'=>'j-field-image','id'=>'inputImage']) }}
{{ Form::text('amount', null, ['class' => 'form-control j-field-amount', 'required']) }}
{!! Form::button('GO', ['type' => 'submit','id' => 'submitform', 'class'=>'btn']) !!}
{!! Form::close() !!}
<script>
var apiSaveDataForm = '{{ action('BannerController@saveDataForm') }}';
</script>
Ho aggiunto la variabile per l'azione nel controller apiSaveDataForm
--
Queso è il file js: app.js
$(document).ready(function(){
$('#submitform').on('submit', function () {
var $v_name = $('.j-field-name').val();
var $v_url = $('.j-field-url').val();
var $v_image = $('.j-field-image').val();
var $v_amount = $('.j-field-amount').val();
$v_amount = $v_amount.replace(/^0+/, '');
$.post(apiSaveDataForm, {
name:$v_name,
url:$v_url,
image:$v_image,
amount:$v_amount
});
});
});
Recupero i dati dal form e li passo in post al controller (dubbio sulla virgola come separatore)
--
Questo è il controller: BannerController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Auth;
use App\Sponsor;
use App\Amount;
class BannerController extends Controller
{
public function saveDataForm(Request $request)
{
$user = Auth::user();
$sponsor = new sponsor;
$sponsor->user_id = $user->id;
$sponsor->name = $request->name;
$sponsor->url = $request->url;
$sponsor->total = $request->amount;
$sponsor->save();
}
}
?>
In fine ho aggiunto in routes/api.php la seguente riga
Route::post('/banner/savedataform', 'BannerController@saveDataForm');
Questi sono tutti i file che ho modificato/creato
Ora, per la dinamica Ajax mi sono basato su un'altra chiamata che all'interno del progetto funziona bene (ma come chiamata per restituire un dato asincrono da DB), ma probabilmente, sicuramente, ho fatto diversi errori in quanto al submit va regolarmente su PayPal per il pagamento, ma niente salvataggio in DB.
Qualcuno potrebbe aiutarmi?
Graziegrazie 
ps: se servono maggiori info chiedete pure
Graziegraziegrazie 