【问题标题】:how to pass a string instead of primary int key in route view如何在路由视图中传递字符串而不是主 int 键
【发布时间】:2020-08-20 03:32:04
【问题描述】:

我想在 laravel 的路由视图中传递一个名称。 例如 - 在web.php中

Route::get('p/{posts}/review/{user}','ReviewController@show')->name('reviews.show'); 

它传递了主键,postsuser 的 id。我想传递用户-> 名称。

我的表演方法——

 public function show($posts, $user)
    {
        return view('posts.reviews.reviewshow', ['posts' => $posts], ['user' => $user]);
    }

【问题讨论】:

  • 位置发送string帖子或用户?显示您的视图代码
  • 您是否想在路线中为用户使用例如 dip,例如:p/1/review/dip?
  • 这个 {posts} 似乎不正确。有没有可能你把 route() 和 view() 误解了?
  • 是的。我想这样使用 - domain/p/1/review/dip
  • 我从这样的控制器传递了对象,$use = User::find($user->id); $pos = 帖子::find($post->id); return redirect()->route('reviews.show', [$pos, $use]);

标签: laravel view routes


【解决方案1】:

首先你必须改变你的路线

Route::get('p/{post}/review/{user}','ReviewController@show')->name('reviews.show');

然后在你的控制器中像这样使用

public function show(Post $post, User $user)
{   
     return view('posts.reviews.reviewshow', ['post' => $post,'user' => $user]);
}

【讨论】:

  • 我试过了。但错误 - 试图获取非对象的属性“名称”
  • 编辑我的问题@DipChakraborty
  • 它返回这个非法的字符串偏移量'name'
【解决方案2】:

在你调用你的 route() 方法的地方使用route('reviews.show', ['posts' => $posts, 'user' => $user->name])。 我建议将 {user} 重命名为 {userName} 以更清楚。

【讨论】:

  • 我试过了,结果 = 试图获取非对象的属性“名称”
猜你喜欢
  • 2014-11-26
  • 2012-10-15
  • 2023-01-02
  • 1970-01-01
  • 2021-04-28
  • 1970-01-01
  • 2021-12-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多