Передача функций даты в JavaScript в Laravel - PullRequest
0 голосов
/ 06 апреля 2019

Я получаю некоторые данные, используя ajax, но я не могу передать функцию diffForHuman (), чтобы получить другой формат даты.Я хочу дату в другом формате.Но, передав created_at моей разметке, он дает мне неопределенную дату.Ниже мой код.Просьба помочь

// Javascript

        $(document).ready(function () {
            $.ajaxSetup({
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                }
            });
        });

        $('select[name="class_id"]').on('change', function() {
            var classID = $(this).val();
            if(classID) {

                $.ajax({

                    url: '/attendance/ajax/'+classID,
                    type: "GET",
                    dataType: "json",
                    success:function(data) {

                        var markup = '';
                        markup += '<tr><th style="width: 2%" class="align-middle text-center"><input type="checkbox" id="options"></th><th style="width: 2%" class="align-middle text-center">#</th> <th style="width: 15%" class="text-center">Student ID<input type="text" class="form-control" disabled></th> <th style="width: 15%" class="text-center">Student Name<input type="text" class="form-control" disabled></th> <th style="width: 15%" class="text-center">Attendance<input type="text" class="form-control" disabled></th> <th style="width: 15%" class="text-center">Date<input type="text" class="form-control" disabled></th> <th style="width: 15%;" class="align-middle text-center">Actions</th> <tr>';

                        $.each(data, function(key, value) {

                            markup += '<tr> <td><input class="checkBoxes" type="checkbox" name="checkBoxArray[]"></td> <td><input type="hidden" value="'+value.id+'" name="id[]">' + value.id + '</td> <td><input type="hidden" value="'+value.student_id+'" name="student_id[]">' + value.student_id + '</td> <td><input type="hidden" value="'+value.first_name+'" name="first_name[]"><input type="hidden" value="'+value.last_name+'" name="last_name[]">' + value.first_name+ ' '  + value.last_name +  '<td><input type="hidden" value="'+value.attendance+'" name="attendance[]">' + value.attendance + '</td>' +  '<td><input type="hidden" value="'+value.created_at+'" name="created_at[]">' + value.created_at + '</td>' + '<td style=" width=12%" class="text-center"> <a><button title="Edit" class="btn btn-outline-primary"><span class="fas fa-pencil-alt"></span></button></a> </td>' +  '</td> <tr>';

                        });
                        $('table[id="studentsData"]').html(markup);
                    }
                });
            }
        });
    });

// Контроллер

 public function student_attendance_registers() {
        $attendances = StudentsAttendance::all();
        $classes = StudentsClass::pluck('class_name', 'id')->all();

        return view('admin.students.attendance.student_attendance_registers', compact('attendances', 'classes'));
    }




 //Model

    class StudentsAttendance extends Model
    {
        protected $fillable = [
            'class_id',
            'student_id',
            'first_name',
            'last_name',
            'attendance'
        ];

        public function studentsClass() {
            return $this->belongsTo('App\StudentsClass');
        }

        public function getdateForHumansAttribute()
        {
            return $this->created_at->diffForHumans();
        }

        public function toArray()
        {
            $data = parent::toArray();

            $data['diffForHumans'] = $this->diffForHumans;

            return $data;
        }

    }

1 Ответ

0 голосов
/ 06 апреля 2019

Лучший способ сделать это - добавить getdateForHumanAttribute метод:

public function getdateForHumansAttribute()
{
    return $this->created_at->diffForHumans();
}

Тогда на вашей модели вы можете использовать где угодно:

$model->dateForHumans;

Для простогоЧтобы всегда добавлять атрибут dateForHumans при получении этой модели, добавьте его к методу toArray:
(также в вашей модели)

public function toArray()
{
    $data = parent::toArray();

    $data['diffForHumans'] = $this->diffForHumans;

    return $data;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...