Ich habe 2 Modelle Tour.php
Formular modal in Laravel mit vue js Bindung
public function Itinerary()
{
return $this->hasMany('App\Itinerary', 'tour_id');
}
und Itinerary.php
public function tour()
{
return $this->belongsTo('App\Tour', 'tour_id');
}
tours
Tabelle:
id|title|content
itineraries
Tabelle:
id|tour_id|day|itinerary
In tour-edit.blade.php
Ansicht Ich habe Vue Js verwendet, um Eingabefeld für day
und plan
dynamisch zu erstellen oder hinzuzufügen und zu entfernen.
-Code in tour-create.blade.php
<div class="row input-margin" id="repeat">
<div class="col-md-12">
<div class="row" v-for="row in rows">
<div class="row">
<div class="col-md-2">
<label >Day:</label>
<input type="text" name="day[]"
class="form-control">
</div>
<div class="col-md-8">
{{ Form::label('itinerary', " Tour itinerary:", ['class' => 'form-label-margin'])}}
{{ Form::textarea('itinerary[]',null, ['class' => 'form-control','id' => 'itinerary']) }}
</div>
<div class="col-md-2">
<button class="btn btn-danger" @click.prevent="deleteOption(row)">
<i class="fa fa-trash"></i></button>
</div>
</div>
</div>
<div class="row">
<button class="btn btn-primary add" @click.prevent="addNewOption" >
<i class="fa fa-plus"></i> Add Field</button>
</div>
</div>
</div>
Ich möchte diese Felder mit ihren jeweiligen Daten füllen. Alle Daten, die zu einer Tour gehören, werden jedoch in der Textbox itinerary
im JSON-Format angezeigt.
Mein vue js sript ist:
<script>
var App = new Vue({
el: '#repeat',
data: {
day:1 ,
rows:[
@foreach ($tour->itinerary as $element)
{day: '{{$element->day}}', plan: '{{$element->plan}}'},
@endforeach
]
},
methods: {
addNewOption: function() {
var self = this;
self.rows.push({"day": "","itinerary":""});
},
deleteOption: function(row) {
var self = this;
self.rows.splice(row,1);
},
}
});
</script>