Я новичок в Laravel и застрял в упомянутой проблеме в течение последних трех дней. Я гуглил его, но мне удалось найти какое-либо решение.
Я создал форму в Laravel и, потеряв фокус ввода кода Grower, извлекаю клиентов из базы данных, используя метод Ajax Get.
Код Ajax указан ниже:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$("#txtGrowerCode").focusout(function(){
var grower_code = $("#txtGrowerCode").val();
var grower_name = $("#txtGrowerName");
var father_name = $("#txtFatherName");
var village_name = $("#txtVillageName");
var society_name = $("#txtSocietyName");
var distt_name = $("#txtDisttName");
$.ajax({
type : "get",
url : "api/grower_details/"+grower_code,
datatype : "json",
data : $("#hidden").val(),
success: function(options){
obj = jQuery.parseJSON(options)
$.each(obj, function(i,option){
grower_name.val(option.g_name);
father_name.val(option.g_father);
village_name.val(option.v_name);
society_name.val(option.so_name);
distt_name.val(option.d_name);
});
}
});
});
Задача
когда я нажимаю кнопку подтверждения, чтобы сохранить ее в другой таблице, отображается страница ошибки, в которой указывается Срок действия страницы истек из-за неактивности
То, что я пробовал до сих пор
Кажется, эта ошибка из-за защиты CSRF, поэтому
Я использовал скрытый ввод для хранения значения csrf.
<input type="hidden" id="_hidden" name="_hidden" value="{{csrf_token()}}">
Добавлен метатег
<meta name="csrf-token" content="{{ csrf_token() }}">
Однажды я попытался исключить текущий URL из VerifyCsrfToken.php этим
Я могу отправить форму успешно, но она делает недействительным
login-session или уничтожает мои переменные сессии.
Я удалил свой код Ajax, т.е. не получил данные клиентов из
базы данных (я заполнил все поля вручную), а затем попытался отправить
Форма по этим данным была успешно сохранена.
Коды:
Файл маршрута
// Route group soil sample collection
Route::group(['Middleware'=>['web']],function(){
Route::GET('/soil_sample',[
'as' => 'soil_sample',
'uses' => 'soilSampleDetailsController@getSampleDetails',
]);
Route::post('/soil_sample',[
'uses' => 'soilSampleDetailsController@createSampleDetails',
]);
});
Файл API
Route::group(['middleware' => ['web']],function(){
Route::get('grower_details/{grower}',[
'as' => 'grower_details',
'uses' => 'soilSampleDetailsController@getGrowerDetails'
]);
});
Код контроллера
public function createSampleDetails(){
$this->validate(request(),[
'txtGrowerCode' => 'required',
'txtGrowerName' => 'required',
'txtFatherName' => 'required',
'txtVillageName' => 'required',
'txtSocietyName' => 'required',
],
['txtGrowerCode.required' => 'Grower Code is required!',
'txtGrowerName.required' => 'Grower Name is required!',
'txtFatherName.required' => 'Father name is required!',
'txtVillageName.required' => 'Village Name is required!',
'txtSocietyName.required' => 'Society Name is required']
);
$sampple_detail = new sample_detail;
$sampple_detail->addSampleDetails();
return redirect('/soil_sample');
}
public function getGrowerDetails(Request $request){
if($request->ajax()){
$data = new Grower();
$growerDetails = $data->getGrowerDetails($request->grower);
return json_encode($data->getGrowerDetails($request->grower));
}
}
Файл модели:
public function addSampleDetails()
{
$this->s_grower = request('txtGrowerCode');
$this->crop_name = request('txtCrop');
$this->save();
}
public function getGrowerDetails($grower_code){
$grower_details = self::leftJoin('society_master', 'g_soc','so_code')
->leftJoin('village_master','g_vill','v_code')
->leftjoin('district_master','district_master.d_code','society_master.so_distt_code')
->select('grower_master.id', 'grower_master.g_code', 'grower_master.g_name', 'grower_master.g_father','society_master.so_name', 'village_master.v_name', 'district_master.d_name')
->where('grower_master.g_code',$grower_code)
->get();
return $grower_details;
}
Форма тега
<form class="form-horizontal" id="frmDocCreate" method = "POST" action="{{route('soil_sample')}}">