Я хочу реализовать подобную систему, но я не знаю, как отправить запрос на подобный контроллер, как только пользователь нажимает кнопку Like, которая является a-тегом. Я создал новый контроллер с именем LikeController из-за того, что у ArticleController уже есть метод POST, который является хранилищем.
Вот код PHP для контроллера
use App\Article;
use App\Like;
use App\Events\NewLike;
class LikeController extends Controller
{
public function store(Request $request)
{
$id = $request['id'];
$article = Article::findOrFail($id);
$user_id = $request->user()->id;
$like = Like::where(['likeable_id' => $article->id, 'user_id' => $user_id]);
$like_type = $possibleLike->like_type;
// check if article exists
if (!$like) {
$like = new Like([
'user_id' => $user_id,
'like_type' => 'like',
'likeable_id' => $article->id,
'likeable_type' => 'article'
]);
} else {
if ($like->like_type == 'like') {
$like->like_type == 'dislike';
} else if ($like->like_type == 'dislike') {
$like->like_type == 'like';
}
}
$like->save();
event(new NewLike($like));
return redirect('/articles'.$article->id);
}
}
Вот мой Javascript в компоненте vue, чтобы инициировать запрос:
export default {
props: ['articleId'],
methods: {
activateLike (articleId) {
axios({
type: 'POST',
url: '/likes',
headers: {
'X-CSRF-Token': $('meta[name=csrf-token]').attr('content')
},
id: articleId
}).then(response => {
console.info(response.data)
}).catch(function(error) {
console.info(error)
})
}
}
}
</script>
Если кому-то понадобится дополнительная информация, я размещу ее ниже здесь.
Маршруты:
Route::get('/', 'PagesController@index');
Route::get('/about', 'PagesController@about');
Route::get('/leaderboard', 'PagesController@leaderboard');
Route::resource('articles', 'ArticlesController');
Route::get('article/{category}', 'ArticlesController@display');
Route::post('/likes', 'LikeController@store');
Auth::routes();
Route::get('/dashboard', 'DashboardController@index')->name('dashboard');
Хусейн прав, метод не разрешен возникает, когда вы попадаете в маршрут с неправильным HTTP-глаголом (например, маршрут для get, но вместо этого вы отправили post). в случае, если ваш маршрут уже правильный, попробуйте php artisan route:clear, чтобы очистить кеш маршрутизации.
Добавлены маршруты к посту. @ Хусейн
также, если это не сработало, попробуйте удалить завершающую косую черту, например, url: 'likes', если это тоже не сработало, проверьте вкладку сети, чтобы узнать, правильный ли URL-адрес
URl правильный. Он набирает localhost: 8000 / лайков
просто посмотрите, куда ваша страница приведет вас без ajax. или перейдите по URL-адресу, указанному в ошибке ajax (если есть), и посмотрите, что вас сдерживает. :п
В нем говорится, что MethodNotAllowedHTTPException



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


пожалуйста, укажите маршруты