首页 > 解决方案 > Laravel 405(不允许的方法)

问题描述

我想实现一个类似的系统,但我不知道一旦用户点击了一个 a-tag 的 like 按钮,如何向 like 控制器发送请求。我创建了一个名为 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);
  }
}

这是我在 vue 组件中用于发起请求的 Javascript:

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.log(response.data)
      }).catch(function(error) {
        console.log(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');

标签: javascriptphplaravel

解决方案


推荐阅读