ИМХО, это может выглядеть примерно так:
public function child_birth_cert_exists($child_birth_cert_no) {
if(Child::where('child_birth_certificate_no', '=', $child_birth_cert_no)
->exists()){
return true;
}else{
return false;
}
}
Как уже подготовлено в вашем JS -колл, вы можете привязать параметр к маршруту.
Так ваш маршрут будет выглядеть например:
Route::post('check_child_birth_cert/{child_birth_cert_no}', 'ChildBirthController@getchildBirth_cert');
Затем параметр маршрута автоматически вводится в методе вашего контроллера.
# ChildBirthController
use Illuminate\Support\Facades\Validator;
public function getchildBirth_cert(Request $request, $child_birth_cert_no) {
$validation = Validator::make($request->all(), [
'center_id' => 'required'
]);
if ($validation->fails()) {
\Session::flash('errors', $validation->errors()->toArray());
return redirect()->back()->withInput();
$this->childRepository->check_child_birth_cert($request->all(), $child_birth_cert_no);
}
См. здесь привязку параметров для маршрутов: https://laravel.com/docs/5.0/routing#route -параметры
РЕДАКТИРОВАТЬ 1:
Я обновил примеры кода выше.
Извините, я видел, что допустил ошибку здесь. Вы уже отправили все данные запроса в check_child_birth_cert
-метод.
Как правило, если в вашем запросе есть поле, вы можете получить к нему доступ одним из следующих способов (я точно пропустил хотя бы одно ...):
- Input :: all ()
- $ request-> get ('key') для GET-параметров
- $ request-> post ('key ') для POST-параметров
- $ request-> all () для обоих GET и POST
Использование проверки, как показано, помогает избавиться от if
-выступления и чтобы убедиться, что все данные представлены так, как вам нужно. Вы также можете извлечь все ошибки из проверки и поместить их в свой сеанс. После этого они будут доступны в вашем view-файле для повторения и отображения. Это всего лишь быстрый пример. Было бы лучше отделить проверку от фактического контроллера на другой класс ИЛИ, еще лучше, используя Formrequests (https://laravel.com/docs/5.8/validation#form -request-validation )
Проблема с вашим примером состоит в том, что вы не отправляете никаких параметров POST или GET, насколько я понимаю ваш JS -код. Вы просто вызываете GET-маршрут с этим параметром маршрута, но это не настоящий GET-параметр. Не смешивайте их, а используйте пост-маршрут и отправьте их в качестве пост-параметров. Параметры маршрута, с другой стороны, могут немного структурировать вашу маршрутизацию. Но опасно не попадать в беду, не зная точно, какой тип маршрута вызывается в определенной точке вашего приложения ИЛИ у вас получаются маршруты, которые должны быть разными, но так как они имеют одинаковую структуру частей (разделенных символом "/" ) будет использовано первое совпадение в вашем файле маршрутов, и, возможно, не тот, который вы предполагаете использовать.
Учитывайте также следующие моменты:
- не отправлять Данные в качестве параметра маршрута, если это просто любое значение. Он должен иметь безошибочную ссылку на данные вашего приложения. Например, вы можете сказать
/users/{id}
, где {id}
представляет идентификатор модели пользователя в вашей базе данных. Если есть возможность получить доступ к данным, которые ему или ей не разрешено просматривать с помощью параметра маршрута, лучше упаковать этот маршрут как минимум после аутентификации или, что еще лучше, авторизации. - подтвердите ваш запрос, если он содержит какие-либо данные, которые вы будете использовать в своем приложении. Проверка Laravel также очищает данные, поэтому SQL -инъекция больше не является вашей главной задачей (но она должна быть в затылке).
Если вам нужно больше значений в вызываемом методе, вы должны запросить маршрут с этими значениями как (на мой взгляд, лучший вариант) POST.
Я не совсем понимаю что вы имеете в виду, имея одинаковое значение для child_birth_certificate_no
и centre_id
. Не могли бы вы объяснить это?