从<a> tag laravel

时间:2016-08-06 00:06:00

标签: javascript php laravel

I'm new in laravel and Javascript.

I have a route which looks like

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

and my page looks like image

内的按钮拨打路线

此页面的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编辑页面。对其他人也一样。

这个问题的解决方案是什么?

2 个答案:

答案 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>