I'm new in laravel and Javascript.
I have a route which looks like
Route::get('/problems/{problem}/edit', 'AdminController@editProblem');
内的按钮拨打路线
此页面的HTML代码是
@foreach($in_contest->problems as $problem)
<div class="list-group">
<a href="#" class="list-group-item">
<i class="fa fa-file fa-lg"></i>
{{ $problem->title }}
<span class="pull-right">
<button onclick="callRoute()" class="btn btn-xs btn-info button">Edit</button>
</span>
</a>
</div>
@endforeach
我为这个onclick编写了javascript代码
<script type="text/javascript">
function callRoute() {
window.location = '{{ url('/problems/' . $problem->id . '/edit') }}';
}
</script>
现在每当我点击P1,P2或P3上的编辑按钮时,它会打开P4的编辑页面。所有人都在打开相同的网址。 我希望当我点击P1上的编辑时,它会重定向到带有P1的$ problem-id编辑页面。对其他人也一样。
这个问题的解决方案是什么?
答案 0 :(得分:1)
您的页面中有4个结果,而您的callRoute
功能不在您的循环中,所以在完成循环后,您在脚本中访问的变量$problem
tag是迭代结果集合的最后一个,这就是为什么它具有id 4
只需将其写成
即可<button onclick="callRoute({{ $problem->id }})" class="btn btn-xs btn-info button">Edit</button>
并在您的脚本中
function callRoute(problem_id) {
window.location = '/problems/' + problem_id + '/edit';
}
答案 1 :(得分:1)
它调用p4的原因是,在运行foreach循环之后,你基本上是将问题ID的最后一次迭代写入你的javascript。
您可以通过将视图代码更改为以下内容来避免一起向您的javascript添加刀片语法,以便将当前问题ID传递给您的javascript函数
@foreach($in_contest->problems as $problem)
<div class="list-group">
<a href="#" class="list-group-item">
<i class="fa fa-file fa-lg"></i>
{{ $problem->title }}
<span class="pull-right">
<button onclick="callRoute({{ $problem->id }})" class="btn btn-xs btn-info button">Edit</button>
</span>
</a>
</div>
@endforeach
和你的javascript函数到以下
<script type="text/javascript">
function callRoute(problemID) {
window.location = '/problems/' + problemID + '/edit';
}
</script>