На самом деле у меня были похожие проблемы для решения подобных случаев. Ваш вопрос относится к Vue точно, но метод ниже вы можете использовать для вашего случая. В любом случае, вы не можете запускать JS и PHP одновременно, потому что они работают с разных сторон. Но так как мне также нравилось иметь все маршруты с их псевдонимами, я подумал, что такой подход ... Вы можете имитировать что-то вроде этого:
Route::get('/', 'PostController@all')->name('all'); // all posts page
Route::get('post', 'PostController@all')->name('all_page'); // THIS IS THE THING (one additional route), WHICH WILL TAKE RESPONSIBILITY ON CASE, WHEN post_id WILL BE EMPTY
Route::get('post/{post_id}', 'PostController@post')->name('post');
Этот метод позволит вам использовать 1-й и 3-й маршруты как обычно,и так же смешано в разных местах в вашем приложении, как это:
{{ route('post.all') }}
{{ route('post', ['post' => $post_id]) }}
{{ route('post') }}/@{{ post.id }}
В сценариях вы можете реализовать подход следующим образом:
let someUrl = "{{ route('post') }}/" + postObj.id;
В представлении вы можете реализовать методкак это:
<a href="{{ route('post') }}/@{{ post.id }}">My post @{{ post.id }}</a>