Herkese merhaba,
Modal bir form hazırladım mükellef kaydı yapıyorum db ye sorun yok ancak validate uyarılarını form kapanmadan ilgili inboxların altında almak istiyorum. AJAX ile devam ederken beceremedim bulamadım, şimdiden Teşekkkürler.
mukellef.blade.php
<!--Modal yeni mükellef kaydı-->
<div id="overlay" class="inset-0 bg-black bg-opacity-70 absolute justify-center items-center h-screen hidden">
<div class="bg-gray-200 p-5 m-5 rounded-md shadow-lg absolute">
<div class="flex justify-between">
<h4 class="text-sky-600">Yeni Mükellef Ekleme Formu</h4>
<svg id="close-modal" class="h-5 w-5 cursor-pointer hover:bg-gray-300 rounded-full"
xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
stroke="currentColor" class="w-6 h-6">
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12" />
</svg>
</div>
<!--Modal body-->
<form action="javascript:void(0)" id="addForm">
{{ csrf_field() }}
<div class="flex space-x-2 mt-4">
<!-- Bölüm1-->
<div>
<label class="text-gray-700">Defter Tipi</label>
<select name="defterTipi"
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50">
<option value="Bilanço">Bilanço</option>
<option value="İşletme">İşletme</option>
<option value="Basit Usul">Basit Usul</option>
<option value="Diğer">Diğer</option>
</select>
@if ($errors->first('defterTipi') == true)
<span class="error-text defter_error text-sm text-red-600 px-3">
*** {{ $errors->first('defterTipi') }} </span>
@endif
</div>
<!-- Bölüm2-->
<div>
<label class="text-gray-700">Unvan</label>
<input name="unvan" type="text" autocomplete=”off”
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50 unvan">
@if ($errors->first('unvan') == true)
<span class="error-text unvan_error text-sm text-red-600 px-3">
*** {{ $errors->first('unvan') }} </span>
@endif
</div>
<!-- Bölüm3-->
<div>
<label class="text-gray-700">Adı</label>
<input name="adi" type="text" autocomplete=”off”
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50 adi">
@if ($errors->first('adi') == true)
<span class="error-text adi_error text-sm text-red-600 px-3">
*** {{ $errors->first('adi') }} </span>
@endif
</div>
<!-- Bölüm4-->
<div>
<label class="text-gray-700">Soyadı</label>
<input name="soyadi" type="text" autocomplete=”off”
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50 soyadi">
@if ($errors->first('soyadi') == true)
<span class="error-text soyadi_error text-sm text-red-600 px-3">
*** {{ $errors->first('soyadi') }} </span>
@endif
</div>
</div>
<!-- Bölüm5-->
<div class="block mt-3">
<div class="flex space-x-2">
<div class="w-1/3">
<label class="text-gray-700">TC Kimlik No</label>
<input name="tcKimlik" type="text" autocomplete=”off”
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50 tcKimlik">
@if ($errors->first('tcKimlik') == true)
<span class="error-text tcKimlik_error text-sm text-red-600 px-3">
*** {{ $errors->first('tcKimlik') }} </span>
@endif
</div>
<!-- Bölüm6-->
<div class="w-1/3">
<label class="text-gray-700">Email</label>
<input name="email" type="email" autocomplete=”off”
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50 email">
@if ($errors->first('email') == true)
<span class="error-text mail_error text-sm text-red-600 px-3">
*** {{ $errors->first('email') }} </span>
@endif
</div>
<!-- Bölüm7-->
<div class="w-1/3">
<label class="text-gray-700">Telefon</label>
<input name="telefon" type="tel" autocomplete=”off”
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50 telefon">
@if ($errors->first('telefon') == true)
<span class="error-text tel_error text-sm text-red-600 px-3">
*** {{ $errors->first('telefon') }} </span>
@endif
</div>
</div>
</div>
<div class="block mt-3">
<div class="flex space-x-2">
<div class="w-1/3">
<!-- Bölüm8-->
<label class="text-gray-700">Kuruluş Tarihi</label>
<input name="kurulus" type="date"
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50 kurulus">
@if ($errors->first('kurulus') == true)
<span class="error-text kurulus_error text-sm text-red-600 px-3">
*** {{ $errors->first('kurulus') }} </span>
@endif
</div>
<!-- Bölüm9-->
<div class="w-1/3">
<label class="text-gray-700">Vergi Dairesi</label>
<select name="vergiDairesi"
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50 vergiDairesi">
<option value="Gaziler VD">Gaziler VD</option>
<option value="19 Mayıs VD">19 Mayıs VD</option>
<option value="Diğer">Diğer</option>
</select>
@if ($errors->first('vergiDairesi') == true)
<span class="error-text vergiDairesi_error text-sm text-red-600 px-3">
*** {{ $errors->first('vergiDairesi') }} </span>
@endif
</div>
<!-- Bölüm10-->
<div class="w-1/3">
<label class="text-gray-700">Vergi Kimlik No</label>
<input name="vergiKimlik" type="text" autocomplete=”off”
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50 vergiKimlik">
@if ($errors->first('vergiKimlik') == true)
<span class="error-text vergiKimlik_error text-sm text-red-600 px-3">
*** {{ $errors->first('vergiKimlik') }} </span>
@endif
</div>
</div>
</div>
<!-- Bölüm11-->
<div class="mt-3">
<label class="text-gray-700">Merkez Adres</label>
<textarea name="merkezAdres"
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50 merkezAdres"
rows="3"></textarea>
@if ($errors->first('merkezAdres') == true)
<span class="error-text merkezAdres_error text-sm text-red-600 px-3">
*** {{ $errors->first('merkezAdres') }} </span>
@endif
</div>
<!-- Buttons-->
<div class="block mt-4 p-2">
<div class="flex justify-end space-x-3">
<button id="vazgec" type="reset"
class="text-white font-light hover:bg-gray-700 bg-gray-400 rounded-lg shadow-sm px-4 py-2">Vazgeç</button>
<button type="submit" id="saveData" name="btnKaydet"
class="text-white font-light bg-sky-600 hover:bg-sky-900 rounded-lg shadow-sm px-4 py-2">Kaydet</button>
</div>
</div>
</div>
</form>
<!-- Modal JS -->
<script>
window.addEventListener(
'DOMContentLoaded', () => {
document.querySelector('#open-modal').addEventListener('click', () => {
document.querySelector('#overlay').classList.remove('hidden')
document.querySelector('#overlay').classList.add('flex')
})
document.querySelector('#close-modal').addEventListener('click', () => {
document.querySelector('#overlay').classList.remove('flex')
document.querySelector('#overlay').classList.add('hidden')
})
document.querySelector('#vazgec').addEventListener('click', () => {
document.querySelector('#overlay').classList.remove('flex')
document.querySelector('#overlay').classList.add('hidden')
})
}
)
</script>
ajax kısmı
@section('scripts')
<script>
$(document).ready(function(){
$('#saveData').on('click','')
// laravel ajax csrf setup
$.ajaxSetup({
headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')}
});
// laravel ajax post form
$.ajax({
url: '{{URL::to('mukellef-ekle')}}',
type: 'post',
data: $('#addForm').serialize(),
success: function(response){
console.log(response,'response')
},
})
});
</script>
@endsection
web.php
// Mükellef Routes
Route::get('/mukellef',[TblMukelleflerController::class,'indexMukellef']);
Route::get('/mukellef-detay',[MukellefDetayController::class,'index']);
Route::post('/mukellef-ekle',[TblMukelleflerController::class,'store']);
TblMukelleflerController.php
<?php
namespace App\Http\Controllers;
use App\Models\tblMukellefler;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
class TblMukelleflerController extends Controller
{
public function indexMukellef()
{
$muk = tblMukellefler::paginate(15);
return view('mukellef', compact('muk'));
}
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
"unvan" => "required|min:5|max:8",
"adi" => "required|min:5|max:8",
"soyadi" => "required|min:5|max:8",
"tcKimlik" => "required|min:11|max:11",
"email" => "required",
"telefon" => "required|min:10|max:12",
"kurulus" => "required|date",
"vergiDairesi" => "required",
"vergiKimlik" => "required|min:10|max:10",
"merkezAdres" => "required|min:5|max:150",
]);
[
"unvan.min" => "en az 5 karakter olmalı.",
"unvan.max" => "en fazla 8 karakter olmalı.",
"unvan.required" => "Bu alan boş kalamaz.",
"adi.min" => "en az 5 karakter olmalı.",
"adi.max" => "en fazla 8 karakter olmalı.",
"adi.required" => "Bu alan boş kalamaz.",
"soyadi.min" => "en az 5 karakter olmalı.",
"soyadi.max" => "en fazla 8 karakter olmalı.",
"soyadi.required" => "Bu alan boş kalamaz.",
"tcKimlik.min" => "TCKN 11 haneden oluşmalı.",
"tcKimlik.max" => "TCKN 11 haneden oluşmalı.",
"tcKimlik.required" => "Bu alan boş kalamaz.",
"email.required" => "Bu alan boş kalamaz.",
"telefon.min" => "10 haneden küçük olamaz.",
"telefon.max" => "En fazla 12 haneden oluşmalı.",
"telefon.required" => "Bu alan boş kalamaz.",
"email.required" => "Bu alan boş kalamaz.",
"kurulus.required" => "Bu alan boş kalamaz.",
"vergiKimlik.min" => "VKN 10 haneden oluşmalı.",
"vergiKimlik.max" => "VKN 10 haneden oluşmalı.",
"vergiKimlik.required" => "Bu alan boş kalamaz.",
"merkezAdres.min" => "en az 5 karakter olmalı.",
"merkezAdres.max" => "en fazla 150 karakter olmalı.",
"merkezAdres.required" => "Bu alan boş kalamaz.",
];
$mukSave = new tblMukellefler();
$mukSave->defterTipi = $request->input('defterTipi');
$mukSave->unvan = $request->input('unvan');
$mukSave->adi = $request->input('adi');
$mukSave->soyadi = $request->input('soyadi');
$mukSave->tcKimlik = $request->input('tcKimlik');
$mukSave->email = $request->input('email');
$mukSave->telefon = $request->input('telefon');
$mukSave->kurulus = date("d-m-Y", strtotime($request->input('kurulus')));
$mukSave->vergiDairesi = $request->input('vergiDairesi');
$mukSave->vergiKimlik = $request->input('vergiKimlik');
$mukSave->merkezAdres = $request->input('merkezAdres');
if($mukSave->save()){
return response()->json(['success','201']);
}else{
return response()->json('fail','400');
}
}
}
umarım ilgili yerleri ekleyebilmişimdir.