You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中获取输入框ID值并传入路由实现产品更新

解决方法:获取输入框ID值并动态带入路由完成产品更新

你当前按钮跳转使用的是后端渲染的固定{{$id}},无法获取用户输入的ID值。要实现需求,可通过以下两种方式处理:

方案一:JavaScript动态拼接跳转URL

修改Blade视图,通过JS实时获取输入框的ID值,再拼接成目标路由:

<div class="modal-body">
    <label for="product-id">ID:</label><br/>
    <input type="text" id="product-id" name="id" placeholder="Enter the product ID" required><br/>
</div>
<div class="modal-footer">
    <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
    <button type="button" onclick="navigateToEdit()" class="btn btn-primary">Save changes</button>
</div>

<script>
function navigateToEdit() {
    const productId = document.getElementById('product-id').value;
    if (productId) {
        location.href = `/produtos/editar/${productId}`;
    } else {
        alert('请输入产品ID');
    }
}
</script>

方案二:表单提交(符合RESTful规范)

由于你的update方法对应POST路由,更推荐用表单提交触发更新,直接传递所有表单数据:

修改Blade视图为表单结构

<form action="{{ route('alterar_produto', ['id' => '__TEMP_ID__']) }}" method="POST" id="update-form">
    @csrf
    <div class="modal-body">
        <label for="product-id">ID:</label><br/>
        <input type="text" id="product-id" name="id" placeholder="Enter the product ID" required><br/>
        <!-- 补充其他产品字段输入框,例如: -->
        <label for="nome">Nome:</label><br/>
        <input type="text" name="nome" placeholder="Enter product name" required><br/>
        <!-- 其余字段如custo、preco等同理添加 -->
    </div>
    <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
        <button type="submit" class="btn btn-primary">Save changes</button>
    </div>
</form>

<script>
document.getElementById('update-form').addEventListener('submit', function(e) {
    const productId = document.getElementById('product-id').value;
    if (!productId) {
        e.preventDefault();
        alert('请输入产品ID');
        return;
    }
    // 动态替换表单action中的占位符为输入的ID
    this.action = this.action.replace('__TEMP_ID__', productId);
});
</script>

Controller代码优化

注意:通常不建议修改模型的id字段,若需求是根据输入ID找到对应产品并更新其他字段,可调整查询逻辑:

public function update(Request $request, $id){
    // 若需根据输入框的ID查询,替换为以下代码
    $produto = Produto::findOrFail($request->id);
    $produto->update([
        // 移除'id' => $request->id,避免修改主键导致数据混乱
        'Nome' => $request->nome,
        'custo' => $request->custo,
        'preco' => $request->preco,
        'quantidade' => $request->quantidade,
        'Marca' => $request->marcas,
        'Voltagem' => $request->Voltagem,
        'Descricao' => $request->Descricao,
    ]);
    return "Produto Atualizado com Sucesso!";
}

路由说明

现有路由已配置GET类型的edit(需自行实现该方法返回编辑视图)和POST类型的update,方案一跳转将触发edit方法,方案二表单提交将直接触发update完成更新。

内容的提问来源于stack exchange,提问作者LostFriend

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 01:25:29