【问题标题】:L5 Using same form for store and updateL5 使用相同的表单进行存储和更新
【发布时间】:2023-03-22 19:59:01
【问题描述】:

作为 L5 新手,我有一个表格,我正在使用它来编辑数据。我有上一个、下一个、第一个和最后一个等链接,以便获取记录并对其进行编辑。我正在使用表单模型绑定来查看表单上的值。我的目的是使用相同的表单来添加新记录,但是由于我使用表单模型绑定所有输入元素都显示它们的值。我应该怎么做才能使用相同的表格添加新记录?任何帮助将不胜感激

{!! Form::model($vehicle,['url' => '/pages/store']) !!}                                   
    <table style="width:650px; margin-left: 4px;" >
        <tbody>
            <tr>
                <td>ID</td>
                <td>Model</td>
                <td>Brand</td>
                <td>License Plate</td>
            </tr>
            <tr>
                <td>{!! Form::text('id' ,null , ['readonly'], ['class' =>'textboxlong form-control', 'style'=>'height:23px;']) !!}</td>
                <td>{!! Form::text('model' ,null ,['class' =>'textboxlong form-control', 'style'=>'height:23px;']) !!}</td>
                <td>
                    {!! Form::select('brand', $brands, null, ['id'=>'brandBox', 'style' => 'width:150px;']) !!}
                </td>
                <td>{!! Form::text('licenseplate' ,null ,['class' =>'textboxlong form-control', 'style'=>'height:23px;']) !!}</td>
            </tr>
        </tbody>
    </table>
    <div id="buttoncontainer">
        <a class="btn btn-default" href="{{ URL::to( 'pages/vehicleprocess/' . $first -> id ) }}"><<</a>&nbsp;
        @if($previous)
            <a class="btn btn-default" href="{{ URL::to( 'pages/vehicleprocess/' . $previous ) }}">PREVIOUS</a>&nbsp;
        @endif
        @if($next)
        <a class="btn btn-default" href="{{ URL::to( 'pages/vehicleprocess/' . $next ) }}">NEXT</a>&nbsp;
        @endif
        <a class="btn btn-default" href="{{ URL::to( 'pages/vehicleprocess/' . $last -> id ) }}">>></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <a class="btn btn-default" id="add">EKLE</a>&nbsp;
        {!! Form::submit('EDIT', array('class'=>'btn btn-primary')) !!}&nbsp;
        {!! Form::submit('NEW RECORD', array('class'=>'btn btn-primary')) !!}&nbsp;
    </div>
{!! Form::close() !!}

【问题讨论】:

  • 你想添加新记录而不刷新还是什么?
  • 我想用同一个表单添加一条新记录。
  • 为什么不用 jquery 和 ajax 调用?

标签: php forms laravel laravel-5


【解决方案1】:

您可以使用相同的表单进行创建,只需传入一个空模型。

$vehicle = new Vehicle();

Form::model($vehicle);

【讨论】:

    【解决方案2】:

    您想要做的是将表单中的所有内容插入到另一个.blade.php 文件中。我通常称它们为form_partial.blade.php

    然后您将有 2 个额外的刀片文件,一个用于存储,一个用于编辑。在商店中,您将使用Form::open(),然后使用@include('form_partial'),然后使用Form::close()

    在您的编辑文件中,除了使用Form::model($model) 然后@include('form_partial') 然后Form::close() 之外,执行相同的操作

    【讨论】:

    • 我需要使用Form::model($model) 进行编辑,并且需要一个空模型进行存储。用你自己的方式很难管理
    【解决方案3】:

    您也可以使用@if 条件,例如,如下所示:

    @if(isset($vehicle))
        {!! Form::model($vehicle, ['url' => '/pages/'.$vehicle->id, 'method' => 'PATCH']) !!}
    @else
        {!! Form::open(['url' => '/pages/store']) !!}
    @endif
    

    因此,当您加载表单进行编辑时,您传递了$vehicle 变量,以便使用Form::model,否则在加载表单以创建新@ 时,Form::open 将与$vehicle 变量一起使用987654327@.

    【讨论】:

    • 我猜车辆会一直设置,第二个表单永远不会出现
    • 不,如果您在创建时不传递 $vehicle 变量,则不会始终设置它,这是一种简单的方法。
    • 我的意思是我每次都将$vehicle 传递给视图,这使您的建议毫无用处
    • 是的,如果你每次都通过$vehicle,那么这个答案是没用的,但是为什么你每次都通过$vehicle而不是edit
    猜你喜欢
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    • 2021-03-07
    • 2017-12-14
    • 2019-01-07
    • 1970-01-01
    相关资源
    最近更新 更多