Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel表格/是否以相同形式创建和编辑?_Php_Laravel_Laravel 5 - Fatal编程技术网

Php Laravel表格/是否以相同形式创建和编辑?

Php Laravel表格/是否以相同形式创建和编辑?,php,laravel,laravel-5,Php,Laravel,Laravel 5,希望有人能帮助我。我已经习惯了过程代码,目前正在将一个旧的PHP应用程序重构为Laravel。旧应用程序中的一个页面有一个表格布局,每个td都有一个输入。这些输入都是一个数组,通过jquery,您可以向表中添加新行以创建新记录。这里有一个JSFIDLE:。它看起来有点像这样,给你一个想法,但小提琴会帮助很多 <tr> <td><input type="text" id="name[]" size="15" name="name[]"></td>

希望有人能帮助我。我已经习惯了过程代码,目前正在将一个旧的PHP应用程序重构为Laravel。旧应用程序中的一个页面有一个表格布局,每个td都有一个输入。这些输入都是一个数组,通过jquery,您可以向表中添加新行以创建新记录。这里有一个JSFIDLE:。它看起来有点像这样,给你一个想法,但小提琴会帮助很多

<tr>
  <td><input type="text" id="name[]" size="15" name="name[]"></td>
  <td><input type="text" id="heartrate[]" size="1" name="heartrate[]"></td>
  <td><input type="text" id="intensity[]" size="1" name="intensity[]"></td>
  <td><textarea rows="4" cols="50" id="description[]" name="description[]"></textarea></td>
</tr>

在Stack上的其他问题以及@Wistar+@MahfuzulAlam的提示/指针提供了大量帮助之后,我找到了解决方案。我需要使用createOrUpdate,但将其与上面列中的名称字段一起使用是行不通的,因为如果更改其中一个字段的名称,它将创建一个新字段。在每个输入数组中都需要一个隐藏的id字段来检查是否需要更新或创建

这是我的看法。构建视图时,确保窗体关闭和窗体打开位于任何其他元素(特别是表)之外


可能会有帮助:假设每一行(
tr
)在数据库中是一条单独的记录,那么您可以通过主键只更新/添加该字段。
updateOrCreate
是否像您的添加/编辑一样?是的,@RaunakGupta,每一行在数据库中都是一条单独的记录。@mahfuzullam,我认为这可能是解决方案。我会尝试一下,如果它有效的话,我会更新它。谢谢
{!! Form::model($workoutcategories,['method' => 'PATCH', 'url' => 'workoutcategories/update']) !!}

@foreach($workoutcategories as $workoutcategory)
<tr>
    <td>{!! Form::text('name[]', $workoutcategory->name, ['class' => 'form-control', 'size' => '15']) !!}</td>
    <td>{!! Form::text('heartrate[]', $workoutcategory->heartrate, ['class' => 'form-control', 'size' => '1']) !!}</td>
    <td>{!! Form::text('intensity[]', $workoutcategory->intensity, ['class' => 'form-control', 'size' => '1']) !!}</td>
    <td>{!! Form::textarea('description[]', $workoutcategory->description,['class' => 'form-control', 'rows' => '4', 'cols'=>'100']) !!}</td>
</tr>
    @endforeach

</tbody>
</table>
public function CreateOrUpdateCategory ()
{
    $workoutcategories = WorkoutCategory::all();
    return view('workouts.categoryform', compact('workoutcategories'));
}

public function update(WorkoutCategory $workoutCategory, WorkoutCategoryRequest $request) {
    $cats = WorkoutCategory::all();
    $workoutCategory->updateorcreate(['name' => $request->name],['name' => $request->name, 'intensity' => $request->intensity, 'heartrate' => $request->heartrate,'description' => $request->description]);
    return redirect('workoutcategoies');
}
@section('content')
    <script type='text/javascript'>
        $(window).load(function(){
            var count = 2;

            $("#Add").click(function() {

                var $clone = $("#tbl tbody #clone").clone();
                $clone.attr({
                    id: "cloned",
                    style: "" // remove "display:none",
                });

                $("#tbl tbody").append($clone);
                $("#count").val(count);
                count++;
            });
        });
    </script>

    <h1>Workout Zones</h1>
    @include('errors/list')

    <hr>
    {!! Form::model($workoutcategories,['method' => 'POST', 'url' => 'workoutcategories/update']) !!}
    <table class='table table-bordered' id='tbl'>
        <tbody>
        <tr>
            <td>Name</td>
            <td>Heart Rate (Optional)</td>
            <td>Intensity (Optional)</td>
            <td>Description</td>
        </tr>

        @foreach($workoutcategories as $workoutcategory)
            <tr>
                <td>{!! Form::text('name[]', $workoutcategory->name, ['class' => 'form-control', 'size' => '15']) !!}</td>
                <td>{!! Form::text('heartrate[]', $workoutcategory->heartrate, ['class' => 'form-control', 'size' => '1']) !!}</td>
                <td>{!! Form::text('intensity[]', $workoutcategory->intensity, ['class' => 'form-control', 'size' => '1']) !!}</td>
                <td>{!! Form::textarea('description[]', $workoutcategory->description,['class' => 'form-control', 'rows' => '4', 'cols'=>'100']) !!}{!! Form::hidden('id[]', $workoutcategory->id,['class' => 'form-control', 'rows' => '4', 'cols'=>'100']) !!}</td>

            </tr>
        @endforeach

        <tr id="clone" style="display:none;">
            <td>{!! Form::text('name[]', null, ['class' => 'form-control', 'size' => '15']) !!}</td>
            <td>{!! Form::text('heartrate[]', null, ['class' => 'form-control', 'size' => '1']) !!}</td>
            <td>{!! Form::text('intensity[]', null, ['class' => 'form-control', 'size' => '1']) !!}</td>
            <td>{!! Form::textarea('description[]', null,['class' => 'form-control', 'rows' => '4', 'cols'=>'100']) !!}{!! Form::hidden('id[]', null,['class' => 'form-control', 'rows' => '4', 'cols'=>'100']) !!}</td>
        </tr>


        </tbody>
    </table>

    <input type='button' id='Add' value='Add'>

    <div class="form-group">
        {!! Form::submit('Update Workout Zones', ['class' => 'btn btn-primary form-control']) !!}
        </form>
    </div>
public function update(WorkoutCategory $workoutCategory, WorkoutCategoryRequest $request) {

        foreach($request->input('name') as $key => $value) {
            if(!empty($request->input('name.' . $key))) {
            $workoutCategory->updateOrCreate(['id' => $request->input('id.' . $key)], ['name' => $request->input('name.' . $key), 'heartrate' => $request->input('heartrate.' . $key), 'intensity' => $request->input('intensity.' . $key), 'description' => $request->input('description.' . $key)]);
            }
        }

        flash()->overlay('Your workout zones have been updated!', 'Good Job!');
        return redirect('workoutcategories')
            ;
    }