Vue / Laravel - Ax ios разместить несколько полей - PullRequest
0 голосов
/ 06 января 2020

Я создал компонент, который может добавлять дополнительные поля нажатием кнопки. Я не знаю, как бы я отправил это в базу данных с axios.post и laravel контроллером. В прошлом мне удавалось добиться этого с использованием jquery и чистого laravel, но я запутался, как реализовать это в vue и ax ios.

Компонент. vue

<code><template>
  <v-app>
  <table class="table">
    <thead>
      <tr>
        <td><strong>Title</strong></td>
        <td><strong>Description</strong></td>
        <td><strong>File</strong></td>
        <td></td>
      </tr>
    </thead>  
    <tbody>
      <tr v-for="(row, index) in rows" :key="row.id">
        <td><v-text-field outlined v-model="row.title" /></td>
        <td><v-text-field outlined v-model="row.description" /></td>
        <td>
          <label class="fileContainer">
          <input type="file" @change="setFilename($event, row)" :id="index">
          </label>
        </td>
        <td><a @click="removeElement(index);" style="cursor: pointer">X</a></td>
      </tr>
    </tbody>
  </table>
    <div>
      <v-btn @click="addRow()">Add row</v-btn>
      <v-btn class="success" @click="save()">Save</v-btn>
      <pre>{{ rows | json}}
экспорт по умолчанию {data: () => ({row: []}), методы: {addRow () {var elem = document.createElement ('tr'); this.rows.pu sh ({title: "", description: "", file: {name: 'Choose File'}}); }, removeElement (index) {this.rows.splice (index, 1); }, setFilename (event, row) {var file = event.target.files [0]; row.file = file}, save () {// ax ios .post}}}

Контроллер. php

 public function store(Request $request) 
{
  // store function
}

Ответы [ 3 ]

1 голос
/ 06 января 2020
 save() {
 let data = this.rows
          axios
            .post("Url", {
                data
            })
            .then((res) => {
               console.log(res);
            })
            .catch((err) => {
                console.log(err)
            });
      }

ссылка ссылка https://github.com/axios/axios

0 голосов
/ 07 января 2020

Теперь работает. Я буду публиковать свой код на случай, если кто-то столкнется с тем же препятствием. Чем вам очень нравится @ kamle sh -Paul и @ MD-amirozzaman

Компонент. vue

<script>
  export default {
    data: ()=> ({
      rows: [],
    }),

    methods: {
      addRow() {
        this.rows.push({
          corporate_objective_id: '',
          kpa: '',
          kpi: '',
          weight: '',
          score: '',
          equal: '',
          file: {
            name: 'Choose File'
          }
        });
      },
      removeElement(index) {
          this.rows.splice(index, 1);
      },
      setFilename(event, row) {
        var file = event.target.files[0];
        row.file = file
      },
      save() {
        const postData = {
          data: this.rows
        }
        console.log(postData)
        axios
        .post('/api/employee-objective', {postData})
        .then(res => { console.log(res) })
        .catch(err => { console.log(err) });
      }
    }
  }
</script>

Контроллер. php

  public function store(Request $request) {
    foreach($request->data as $data) {
      $container = EmployeeObjective::updateOrCreate([
        'kpa_info' => $data['kpa'],
        'kpi_info' => $data['kpi'],
        'kpa_weight' => $data['weight'],
        'kpa_score_1' => $data['score'],
        'kpa_equal' => $data['equal'],
       ]);
      $container->save();
    }
  }
0 голосов
/ 06 января 2020
save() {
       axios
            .post("/your/uri", {
                user_id: 1,
                user_name:'jhone doe',
                email:'test@test.com' 
            })
            .then(response => {
               console.log(response);
            })
            .catch(error => {
                console.log(error)
            });
      }

Вы можете получить свои данные с вашего контроллера $request->user_id, ..., $request->email

Совет: если вы отправьте любой object, вы должны JSON.stringify(your_json) их и в данных ответа от контроллера json_decode($your_json,true) или вам нужно изменить файл заголовка.

Всегда используйте '/your/uri' вместо /your/uri/ без трейлинга '/'

...