从按钮单击 laravel 调用路由

新手上路,请多包涵

我正在为我的一个项目使用 Laravel 框架和刀片模板引擎,其中我的路线看起来像

Route::get('/problems/{problem-id}/edit', 'AdminController@editProblem');

我在 AdminController 中有 editProblem 方法,它返回一个视图

public function editProblem(Problem $problem) {
        return view('admin.problem-edit', compact('problem'));
    }

我在视图上有一个按钮,看起来像

<button class="btn btn-xs btn-info pull-right">Edit</button>

现在我想在单击按钮时使用 $problem->id 调用此路由。我需要在路线上传递这些值。

我怎样才能做到这一点?

原文由 rimonmostafiz 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 851
2 个回答

在我看来,你应该使用 url() Laravel 方法

要使用问题的 id 呼叫您的路线,您可以执行以下操作:

 <a href="{{ url('/problems/' . $problem->id . '/edit') }}" class="btn btn-xs btn-info pull-right">Edit</a>

我使用了锚标记,但它会像按钮标记一样呈现,因为我保留了您定义的相同样式类。

为什么你应该使用 url() 方法?

原因很简单,url 方法会获取到你的控制器的完整 url。如果您不使用它,href 链接将附加当前 url。

例如,假设您的按钮位于给定页面内

yourdomain.com/a-given-page/

当有人单击您的按钮时,结果将是:

yourdomain.com/a-given-page/problems/{problem-id}/edit

当你想得到这个:

yourdomain.com/problems/{problem-id}/edit

关于您的 editProblem 方法的一些注意事项

你的路线有’\(id',所以你需要在你的方法中接收这个'\)id’

 public function editProblem($problem_id) {

$problem = \App\Problem::find($problem_id); //If you have your model 'Problem' located in your App folder

return view('admin.problem-edit', compact('problem'));
}

原文由 Geraldo Novais 发布,翻译遵循 CC BY-SA 4.0 许可协议

您将需要创建指向此路线的链接:

 <a href="/problems/{{ $problem->id }}/edit" class="btn btn-xs btn-info pull-right">Edit</a>

如果您使用命名路由,这将更容易:

 Route::get('/problems/{problem-id}/edit', ['as' => 'problems.edit', 'uses' => 'AdminController@editProblem']);

然后你只需要调用 route 方法:

 <a href="{{ route('problems.edit', $problem->id) }}" class="btn btn-xs btn-info pull-right">Edit</a>

原文由 Luis Dalmolin 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏