Как я могу отобразить пользовательский контент в vue-good-table в моем компоненте на стороне просмотра?

#laravel #vuejs2 #vue-good-table

#laravel #vuejs2 #vue-good-table

Вопрос:

Я новичок в VueJS и решил использовать библиотеку под названием Vue-good-table (документ здесь: https://xaksis.github.io/vue-good-table / ) для отображения таблицы данных в моем проекте laravel вместо обычных таблиц данных Yajra, которые используют jQuery. Я смог отобразить свои данные из серверной части, но теперь я изо всех сил пытаюсь включить кнопку редактирования в пользовательский столбец «действия». Я пробовал много способов, но ни один из них не был успешным. Мне нужен способ перенаправления на страницу редактирования при нажатии кнопки, поэтому я предполагаю, что мне нужно обработать пользовательский шаблон столбца в моем файле представления php. Вот код, чтобы сделать его более явным :

Контроллер Php :

 public function index() {
    $users = json_encode(User::latest()->get());
    $userColumns = json_encode([
            [
                'label' => 'ID',
                'field' => 'id'
            ],
            [
                'label' => 'name',
                'field' => 'name'
            ],
            [
                'label' => 'Email',
                'field' => 'email'
            ],
            [
                'label' => 'Action',
                'field' => 'actions'
            ]
    ]);

    return view('admin.users.index', compact('users', 'userColumns'));
}
 

Компонент Vue :

 <template>
<div>
    <vue-good-table
        :columns="columns"
        :rows="rows"
        compactMode
    >
        <slot></slot>
    </vue-good-table>

</div>
</template>

<script>
   import { VueGoodTable } from 'vue-good-table';

   export default {
     props: ['rows', 'columns'],
     components : { VueGoodTable },
   }
</script>

<style scoped>

</style>
 

app.js файл :

 import Vue from 'vue';
import Datatables from './components/datatables';



const app = new Vue({
    el: '#app',

    components : {
        'bdfr-datatables' : Datatables,
    },
}
 

Просмотр файла php :

 @section('content')
    <bdfr-datatables :rows="{{ $users }}" :columns="{{ $userColumns }}">
        <!-- wishing to display this part -->
        <template slot="table-row" slot-scope="props">
            <span v-if="props.column.field === 'actions'">
                <a href="#">Edit</a>
            </span>
            <span v-else>
                @{{props.formattedRow[props.column.field]}}
            </span>
         </template>
    </bdfr-datatables>
@endsection
 

Чего мне не хватает, чтобы заставить его работать? Заранее благодарю вас.

Ответ №1:

Я изо всех сил пытаюсь включить кнопку редактирования в пользовательский столбец «действия». Я пробовал много способов, но ни один из них не был успешным. Мне нужен способ перенаправить на страницу редактирования при нажатии кнопки

Если я правильно понял ваш вопрос, вы хотели бы отобразить ссылку, которая перенаправляет на форму пользовательского издания, через URL, который будет выглядеть так /user/1/edit .

  • Сначала проверьте, что возвращает Laravels

Возможно, вы захотите пойти с dd(User::latest()->get()); этим. По умолчанию вы должны получить идентификатор вместе с другой информацией, если только вы $guarded не указали их явно.

  • Затем адаптируйте свое решение с помощью системы шаблонов vue-good-table

Если вы проверите эту ссылку, она покажет вам пример таблицы, в которой, похоже, отображается столбец «возраст» с определенным стилем, а остальные по умолчанию. Что здесь интересно, так это то, что он показывает вам, что каждый из ваших пользователей может быть доступен через props.row .

Итак, что вам нужно сделать, это что-то вроде следующего:

   <template slot="table-row" slot-scope="props">
    <span v-if="props.column.field == 'actions'">
      <a :href="`/user/${props.row.id}/edit`">Edit</a>
    </span>
    <span v-else>
      {{props.formattedRow[props.column.field]}}
    </span>
  </template>
</vue-good-table>