【问题标题】:Dynamic routes doesn't work in Laravel 5.5动态路由在 Laravel 5.5 中不起作用
【发布时间】:2018-03-17 13:13:00
【问题描述】:

我对动态路由有一些问题。

我刚刚尝试将帖子表中的点赞值添加到某个帖子。

web.php

Route::get('post/{$id}/like', 'PostController@like')->name('post.like');
Route::resource('post', 'PostController');

我在资源控制器 PostControleler 中定义了 1 个自定义方法。

PostController@like

public function like($id)
{
    $post = Post::find($id);
    $post->likes++;
    $post->save();
    return redirect()->back();
}

和刀片 php 视图中的链接

<a href="{{route('post.like', $post)}}" class="btn btn-success btn-xs">Like</a>

点击链接时,什么也没发生,只是显示404

Sorry, the page you are looking for could not be found.

为什么动态路由不起作用。

附言

如果我将方法替换为 show 而不是 like 则该代码有效(这意味着自定义方法受到某些东西的阻碍,代码本身正在工作)

提前致谢。

【问题讨论】:

  • 试试这个 喜欢
  • 是的,我之前已经用过了,什么也没有,仍然是 404。这意味着方法定义成功,但值没有增加,视图也没有显示,只有 404

标签: php laravel


【解决方案1】:

你需要用下面的这个替换你的href,如果$post是id值的$post,或者用$post-&gt;id替换它

<a href="{!! route('post.like', [$post]) !!}" class="btn btn-success btn-xs">Like</a>

并通过邮寄方式更改获取(这里您将数据发送到服务器,这意味着您将发布 $id)

Route::post('/post/{$id}/like', 'PostController@like')->name('post.like');

【讨论】:

  • 应该适用于任何方法。我将所有代码放入资源控制器'PostController'中的默认方法显示的类似方法中,并且有效!是什么阻止了自定义方法的工作?
  • 不,这里你将发送 $id 到 like 一个更新 likes 列值的方法,为此,你应该使用 post 方法。并像这样更改 web.php 的路由:Route::resource('post', 'PostController'); Route::get('post/{$id}/like', 'PostController@like')-&gt;name('post.like');
  • 是的,但是使用 post 方法也不起作用。尝试使用 ::any 方法,同样...我认为某些东西阻止使用自定义方法(使用资源方法,该代码可以工作并且喜欢增加值(也使用 get 方法))
  • 资源控制器阻止了自定义路由,我们应该在自定义路由之后在web.php中定义资源控制器。laravel.com/docs/5.5/…
  • 我认为您需要在发布之前以您的路线名称添加 /,如下所示:Route::post('/post/{$id}/like', 'PostController@like')-&gt;name('post.like');
【解决方案2】:

该死....我只是忘记在自定义路由中删除 $ 登录。

应该是:

Route::get('post/{post}/like', 'PostController@like')->name('post.like');

【讨论】:

    猜你喜欢
    • 2019-12-10
    • 2018-05-26
    • 1970-01-01
    • 2018-08-05
    • 2018-11-08
    • 1970-01-01
    • 2018-06-23
    • 2019-04-02
    • 1970-01-01
    相关资源
    最近更新 更多