表单未路由到具名路由 Laravel 5.8

3
我知道我在做一些非常基本的东西,但似乎找不到问题所在。 我的表单没有路由到其命名路由。 我的路由命名方式是否有误? 表单:
<form action="{{route('inventory.deduct', 'test')}}" method="post">
    @csrf
    <div class="modal-body">
        Enter number of items to issue for:
        <input type="text" name="itemname" id="itemname" class="form-control" readonly>
        <input type="text" id="itemid" name="itemid" hidden>
    </div>
    <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
    </div>
</form>

路由

Route::post('inventory/{id}/deduct', 'InventoryController@deduct')->name('inventory.deduct');

你能写下你所遇到的错误吗? - Ahmad Karimi
路由中经常出现的错误是 inventory.deduct 已经存在于 routes/web.php 中。先到先得,除非 test 不是一个整数,否则一切看起来都很好。无论是整数还是非整数,路由和 test 都应该到达您的控制器。除非您在 routes/web.php 中使用正则表达式检查。 - Dimitri Mostrey
@AhmadKarimi 我没有收到任何错误信息。 - kwestionable
@DimitriMostrey 我也是这么想的。无论参数如何,它都应该进入我的控制器,但事实并非如此。 - kwestionable
你可以发布控制器代码吗? - Nabil Farhan
4个回答

1
 <form action="{{route('inventory.deduct', $itemid)}}" method="post">

1
将您的路由参数更改如下:
<form action="{{route('inventory.deduct', ['id'=>$itemid])}}" method="post">

OR

<form action="{{route('inventory.deduct', $itemid)}}" method="post">

两种方法都可以使用。


0

你可以通过在路由中传递参数来改变操作路由。

表格

 <form action="{{route('inventory.deduct',$collection->id)}}" method="post">

            @csrf
            <div class="modal-body">
                Enter number of items to issue for:
                <input type="text" name="itemname" id="itemname" class="form-control" readonly>
                <input type="text" id="itemid" name="itemid" hidden>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
                <button type="button" class="btn btn-primary">Save changes</button>
            </div>
        </form>

路由

Route::post('inventory/{id}/deduct', 'InventoryController@deduct')
        ->name('inventory.deduct');

希望这可以帮到你。


0

在 web.php 文件中调用时,将 {id} 作为数组传递。在表单的路由中添加 ['id'=>$itemid],因为在 web.php 文件中你需要传递 id。

<form action="{{ route('inventory.deduct',['id'=>$itemid]) }}" method="post">
@csrf
</form>

web.php 是正确的。

Route::post('inventory/{id}/deduct', 'InventoryController@deduct')
        ->name('inventory.deduct');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接