в laravel если в контроллере не работает условие - PullRequest
0 голосов
/ 20 февраля 2020

я пытаюсь использовать, если условие в контроллере (ЕСЛИ ИЗОБРАЖЕНИЕ НЕ ЗАГРУЖЕНО, оно go в условие ELSE или иначе go в IF), но оно не работает, оно просто перенаправляет регистрацию со страницы при отправке формы

код

public function Enrollment(Request $request)

{

  $this->validate($request, [

      'name' => 'required|string|max:255',
      'father_name' => 'required|string|max:225',
      'address' => 'required|string|max:255',
      'card_id' => 'required|string|max:255',
      'image' => 'required|image|mimes:jpeg,png,jpg',

    ]);

    if ($request->image != '')


  {


    $input['name'] = strtoupper ($request['name']);
    $input['father_name'] = strtoupper ($request['father_name']);
    $input['address'] = strtoupper ($request['address']);
    $input['card_id'] = strtoupper ($request['card_id']);

    $input['image'] = time().'.'.$request->image->getClientOriginalExtension();
    $folder1 = public_path('IMAGE/');
    $path1 = $folder1 . $input['image']; // path 1
    $request->image->move($folder1, $input['image']); // image saved in first folder
    $path2 = public_path('IMAGE/BACKUP_IMAGE/') . $input['image']; // path 2
    \File::copy($path1, $path2);



}else{

    $input['name'] = strtoupper ($request['name']);
    $input['father_name'] = strtoupper ($request['father_name']);
    $input['address'] = strtoupper ($request['address']);
    $input['card_id'] = strtoupper ($request['card_id']);


   }

    Card::create($input);

   return back()->with('success','Enrolled Successfully.');
}

Ответы [ 2 ]

0 голосов
/ 20 февраля 2020

Приятно, что вы используете laravel. Сначала я дам вам несколько советов по улучшению фрагмента кода.

Вы написали

это просто перенаправление регистрации со страницы при отправке формы

это правильно, потому что если вы отправите форму без изображения, проверка скажет «ложь».

Вы не можете проверить требуемое таким образом:

, если ($ request-> image! = '') {

, потому что это необходимо.

На самом деле ваш код вообще пропускает проверку, было бы лучше, если вы используете следующее:

$validator = Validator::make($request->all(), [
    'name' => 'required|string|max:255',
    'father_name' => 'required|string|max:225',
    'address' => 'required|string|max:255',
    'card_id' => 'required|string|max:255',
    'image' => 'required|image|mimes:jpeg,png,jpg',
]);

if ($validator->fails()) {
    Session::flash('error', $validator->messages()->first());
    return redirect()->back()->withInput();
}

Если вы сбросите свой дд ($ validator); вы увидите все возможности для проверки $ запроса. Ваши ошибки вы найдете здесь: $ validator-> errors ().

Если что-то пошло не так, вы должны перенаправить обратно с помощью

-> withInput ()

, поэтому все данные останутся в форме. Также возможно с некоторыми пояснениями для пользователя -> withErrors ():

    // message information for the user
    $messages = $validator->errors();
    $messages->add('Your explanation'); 

    // redirect
    return redirect()->route('index')->withErrors($messages)->withInput();

На самом деле я не уверен, почему вы сохраняете все $ request в $ input.

Вы можете проверить https://laravel.com/docs/5.8/validation#using -rule-objects , которые помогут найти отличное решение для использования strtoupper ().

Полезные ссылки:

https://laravel.com/docs/5.8/validation https://laravel.com/docs/5.8/session#flash -data

0 голосов
/ 20 февраля 2020

попробуйте

if($request->hasfile('user_image'))
...