Я довольно новичок в кодировании в Laravel, и я слежу за видео Laravel Basics от Jeffery Way. Сейчас я работаю над созданием собственного сайта, который позволит пользователям регистрироваться, отправлять и получать сообщения и отправлять сообщения на форум.Laravel 5.2: ModelNotFoundException для определенных моделей
Я настраиваю отправку/получение сообщений и поддерживаю его достаточно хорошо, но я хочу, чтобы это было безопасно для пользователя, пытающегося отправить сообщение неверному имени пользователя.
Форма очень проста: 'send_to' принимает имя пользователя, 'заголовок' и 'тело'.
Мое сообщение имеет мутатор, который запрашивает базу данных для этого имени пользователя и устанавливает поле «send_to» для этого идентификатора пользователя.
public function setSendToAttribute($value)
{
$user = User::where('name', $value)->firstOrFail();
$this->attributes['send_to'] = $user->id;
}
Что бы я хотел сделать, это поймать исключение, если имя пользователя недействительно. Не я сделал это с handler.php файл, как показано ниже:.
public function render($request, Exception $e)
{
if($e instanceof ModelNotFoundException)
return $e->getmessage();
return parent::render($request, $e);
}
Так что это отлично работает и возвращает сообщение «Нет результатов запроса для модели [App \ User] То, что я бы предпочел, чтобы сделать хотя он установлен так, чтобы он снова возвращался к форме с заполненным заголовком и телом и сообщением об ошибке, в котором говорилось, что имя пользователя не зарегистрировано.
Еще одна часть этого вопроса может быть выполнена отдельно от всех значений ModelNotFoundExceptions если я пытаюсь найти конкретное сообщение, он не вернет, что Пользователь не найден?
Я бы рекомендовал вам выполнить проверку пользователя внутри вашего контроллера. Вы хотите проверить информацию, а затем отправить соответствующее сообщение пользователю или выполнить задание. Я бы также рекомендовал использовать мутаторы только для форматирования значений, это не правило, но мутаторы предназначены для изменения данных перед тем, как перенести его в базу данных. То, как вы это делаете, вы «скрываете» свою логику внутри мутатора, что противоречит интуиции. Надеюсь это поможет. – TiagoRL