как объединить строку на стороне контроллера в форму автозаполнения?

#javascript #php #html #laravel #bootstrap-4

#javascript #php #HTML #laravel #bootstrap-4

Вопрос:

У меня есть загрузочная форма, в которой пользователь вводит нужное мне электронное письмо, если пользователь не вводит @scoops.com он автоматически объединяет либо сторону формы, либо сторону контроллера

В контроллере это сохраняется с помощью этого $customer->email = $request->email; если хотите проверить на стороне контроллера, как я могу проверить, вводит ли пользователь @scoops.com в конце имени пользователя. Если она отсутствует, то объедините @scoops.com с именем пользователя

 <div class="form-group">
  <label>Email <span style="opacity: 0.5; font-style: italic; color: red;">(Required)</span></label>
  <div class="input-group">
    <input type="search" name="email" id="email" autocomplete="off" class="form-control input-lg" placeholder="Enter Email" name="name" required="@scoops.com" / onfocus='tmp=this.value;this.value=""' onblur='if(this.value=="")this.value=tmp'>
    <div class="input-group-append">
      <span class="input-group-text">@scoops.com</span>
    </div>
  </div>
  <ul id="suggested-emails" class="list-group"></ul>
  <span id="error_email"></span> 
  @if($errors->has('email'))
    <div class="alert alert-danger">
      {{ $errors->first('email') }}
    </div>
  @endif
</div>

`
  

Ответ №1:

Что-то вроде:

 $customer->email = $request->email;

if (!preg_match('/^.*@scoops.com$/', $customer->email)) {
  $customer->email .= '@scoops.com';
}
  

Риск заключается в том, что они вставляют anything@example.com затем вы получите anything@example.com@scoops.com . Вероятно, требуется что-то дополнительное, чтобы проверить, похоже ли это уже на адрес электронной почты (т. Е. содержит хотя бы «@» в нем).

Комментарии:

1. спасибо за вашу помощь, вы правы, так что на случай, если у нас должна быть предварительная проверка с использованием javascript, я думаю

Ответ №2:

Прежде всего вы проверите, @scoop.com присутствует или нет, как показано ниже:

    use IlluminateSupportStr;

   $myString = '@scoop.com';
   $contains = Str::contains($request->email, '@scoop.com');
  

$contains будет либо true, либо false

если значение равно false, то объедините @scoop.com как показано ниже

 $newString = $request->email.$myString;
  

Комментарии:

1. хотя этот ответ не имеет никаких ограничений. я пробовал это.