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