Как сохранить хэш в URL-адресе перенаправления Laravel 8 и Inertiajs

#php #laravel #redirect #laravel-8 #inertiajs

Вопрос:

Я использую Laravel 8 с инерцией и реагирую. Я пытаюсь перенаправить на URL-адрес с хэшем в конце URL-адреса, и по какой-то причине, независимо от того, как я создаю URL-адрес, Laravel удаляет фрагмент в конце. Даже когда я явно использую withFragment , это не работает. Вот мой контроллер:

 /**  * Handle request to store a new answer  */  public function store(Request $request)  {  $userId = Auth::id();  $question = Question::find($request-gt;input('question')['id']);  $questionAuthor = User::find($question-gt;user_id);  $answer = $request-gt;input('answer');   $newAnswer = new Answer;   $newAnswer-gt;body = $answer['body'];  $newAnswer-gt;user_id = $userId;  $newAnswer-gt;question_id = $question-gt;id;  $newAnswer-gt;save();   Mail::to($questionAuthor)-gt;send(new NewAnswer(  $questionAuthor,   $newAnswer,  $question  ));   $url = url("/questions/{$question-gt;slug}");   return redirect($url)-gt;withFragment($newAnswer-gt;id);  }  

Если бы кто-нибудь мог помочь мне понять, почему хэш удаляется с конца и как я мог бы это исправить, я был бы очень благодарен. Спасибо.

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

1. Попробовать redirect()-gt;to($url)-gt;withFragment($newAnswer-gt;id) ? Вот как я обычно это делаю. Хотя на самом деле вам не следует жестко кодировать URL-адреса, а вместо этого использовать имена маршрутов. В идеале ваш код должен больше походить на redirect()-gt;route("question", $question)-gt;withFragment($newAnswer-gt;id);

2. Спасибо @miken32, я собираюсь попробовать ваше предложение. Я дам тебе знать, если это сработает

3. К сожалению, это не сработало. Хэш все еще снимается с конца. Совершенно сбит с толку и расстроен

4. Я предполагаю, что вы выполнили отладку, чтобы подтвердить, что передаете допустимые значения? И еще одно предложение. Вы должны использовать привязку модели маршрута везде, где можете, чтобы позволить Laravel выполнять поиск моделей и обрабатывать случаи, когда модели не найдены. Что происходит в вашем методе выше, если $question значение равно null, потому что соответствующая запись не была найдена?

5. ДА. И не имеет значения, что я выдаю за фрагмент, будь то динамически сгенерированный или жестко закодированный. Просто раздевается. Это немного отдельная проблема. Этот проект все еще далек от завершения. Придет правильная обработка ошибок