rim*_*fiz 7 php routes laravel laravel-5 balde
我正在为我的一个项目使用Laravel框架和刀片模板引擎,我的路线看起来像
Route::get('/problems/{problem-id}/edit', 'AdminController@editProblem');
Run Code Online (Sandbox Code Playgroud)
我在AdminController中有editProblem方法,它返回一个视图
public function editProblem(Problem $problem) {
return view('admin.problem-edit', compact('problem'));
}
Run Code Online (Sandbox Code Playgroud)
我在视图上有一个看起来像的按钮
<button class="btn btn-xs btn-info pull-right">Edit</button>
Run Code Online (Sandbox Code Playgroud)
现在我想$problem->id用点击按钮的时候调用这条路线.我需要在路线上传递这些值.
我怎样才能做到这一点?
要使用问题的ID给您打电话,您可以执行以下操作:
<a href="{{ url('/problems/' . $problem->id . '/edit') }}" class="btn btn-xs btn-info pull-right">Edit</a>
Run Code Online (Sandbox Code Playgroud)
我使用了一个锚标记,但它会像你按钮标记一样呈现,因为我保留了你定义的相同样式类.
原因很简单,url方法将获得控制器的完整URL.如果你不使用它,href链接将附加当前url.
例如,supose you按钮位于给定页面内
yourdomain.com/a-given-page/
当有人点击你的按钮时,结果将是:
yourdomain.com/a-given-page/problems/{problem-id}/edit
当你想得到这个:
yourdomain.com/problems/{problem-id}/edit
您的路线有"$ 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'));
}
Run Code Online (Sandbox Code Playgroud)
您需要创建指向此路线的链接:
<a href="/problems/{{ $problem->id }}/edit" class="btn btn-xs btn-info pull-right">Edit</a>
Run Code Online (Sandbox Code Playgroud)
如果您使用命名路由,这将更容易:
Route::get('/problems/{problem-id}/edit', ['as' => 'problems.edit', 'uses' => 'AdminController@editProblem']);
Run Code Online (Sandbox Code Playgroud)
然后你只需要调用该route方法:
<a href="{{ route('problems.edit', $problem->id) }}" class="btn btn-xs btn-info pull-right">Edit</a>
Run Code Online (Sandbox Code Playgroud)
尝试这个:
<button type="button" onclick="window.location='{{ url("users/index") }}'">Button</button>
Run Code Online (Sandbox Code Playgroud)
小建议: 当您在laravel中定义路由时,给它一个唯一的名称,它可以帮助您像这样跟踪每个URL
Route::get('/problems/{problem-id}/edit', 'AdminController@editProblem')->name('pEdit');
Route::post('/problems/{problem-id}/edit', 'AdminController@editProblem')->name('pEdit');
Run Code Online (Sandbox Code Playgroud)
现在,您可以在Blade中使用此路由,仅使用发布名称,并同时获取
<button type="button" onclick="window.location='{{ route("pEdit",array("parameter1")) }}'">Button</button>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43619 次 |
| 最近记录: |