Как добавить целое число в массив в зависимости от флажка (ов), которые я нажал? - PullRequest
2 голосов
/ 07 октября 2019

Я использую полный календарь в своем проекте Laravel, и мне нужно добавить в него повторяющиеся события.

Я добавил флажки в своем пользовательском интерфейсе, которые представляют каждый день недели (понедельник, вторник,ср.).

В полном календаре я добавил свойство daysofweek.

В основном:

  • Дни недели, в которыесобытие будет повторяться (это массив целых чисел).

  • Каждое целое представляет день недели, где 0 означает воскресенье, 1 означает понедельник и т. д. (например,[2, 4] означает, что событие повторяется каждый вторник и четверг).

  • Если не указано, предполагается, что событие будет повторяться каждый день.

Я хочу нажать на понедельник, и к массиву будет добавлено целое число, как в примере ниже:

$event_dow = [1];

Если я нажму и в понедельник, и во вторник, массив будет иметь:

$event_dow = [1,2];

Понятия не имею, как это сделать.

Следуйте ниже моего кода:

EventController.php

public function store(Request $request)
    {

        //

       $this->validate($request, [
        'event_name' => 'required|string|min:2|max:255',
        'daterange' => 'required',
    ]);
       $time_start = $request->input('start_time');

       $time_end = $request->input('end_time');

       $tempDate = $request->input('daterange');
       $temp2 = str_replace('-', null, $tempDate);
       $temp2 = str_replace('/', '-', $temp2);
       $temp3 = explode('  ', $temp2);

       $date1 = date_create_from_format('m-d-Y', $temp3[0]);
       $date2 = date_create_from_format('m-d-Y', $temp3[1]);

       $event_dow = [];

       if($request->has('monCheck'))
       {
        $$event_dow = $event_dow.'1';
    };

    if($request->has('tueCheck'))
    {
        $event_dow = $event_dow.'2';
    };

    if($request->has('wedCheck'))
    {
        $event_dow = $event_dow.'3';
    };

    if($request->has('thurCheck'))
    {
        $event_dow = $event_dow.'4';
    };

    if($request->has('friCheck'))
    {
        $event_dow = $event_dow.'5';
    };

    if($request->has('satCheck'))
    {
        $event_dow = $event_dow.'6';
    };

    if($request->has('sunCheck'))
    {
        $event_dow = $event_dow.'7';
    };

    $event = new event([
        'event_name' => $request->input('event_name'),
        'event_desc' => $request->input('event_desc'),
        'event_venue' => $request->input('event_venue'),
        'event_start' => date_format($date1, 'Y-m-d H:i:s'),
        'event_finish' => date_format($date2, 'Y-m-d H:i:s'),
        'event_venue' => $request->input('event_venue'),
            'event_dow' => $request->input('event_dow'), //days of week
            'evcat_id' => $request->input('evcat_id'),
            'user_id' => $request->input('user_id'),


        ]);

    $event->save();
    Session::flash('success', 'Event Created Successfully');
    return redirect()->route('event.sched');

}

пилка

<div class="row" style="margin-left: 50px;">
                        <div class="form-check form-check-inline">
                            <div class="custom-control custom-checkbox">
                                <input type="checkbox" class="custom-control-input" name="monCheck" id="monCheck">
                                <label class="custom-control-label" for="monCheck">Mon</label>
                            </div>
                        </div>


                        <div class="form-check form-check-inline">
                            <div class="custom-control custom-checkbox">
                                <input type="checkbox" class="custom-control-input" name="tueCheck" id="tueCheck">
                                <label class="custom-control-label" for="tueCheck">Tue</label>
                            </div>
                        </div>

                        <div class="form-check form-check-inline">
                            <div class="custom-control custom-checkbox">
                                <input type="checkbox" class="custom-control-input" name="wedCheck" id="wedCheck">
                                <label class="custom-control-label" for="wedCheck">Wed</label>
                            </div>
                        </div>

                        <div class="form-check form-check-inline">
                            <div class="custom-control custom-checkbox">
                                <input type="checkbox" class="custom-control-input" name="thurCheck" id="thurCheck">
                                <label class="custom-control-label" for="thurCheck">Th</label>
                            </div>
                        </div>

                        <div class="form-check form-check-inline">
                            <div class="custom-control custom-checkbox">
                                <input type="checkbox" class="custom-control-input" name="friCheck" id="friCheck">
                                <label class="custom-control-label" for="friCheck">Fri</label>
                            </div>
                        </div>

                        <div class="form-check form-check-inline">
                            <div class="custom-control custom-checkbox">
                                <input type="checkbox" class="custom-control-input" name="satCheck" id="satCheck">
                                <label class="custom-control-label" for="satCheck">Sat</label>
                            </div>
                        </div>

                        <div class="form-check form-check-inline">
                            <div class="custom-control custom-checkbox">
                                <input type="checkbox" class="custom-control-input" name="sunCheck" id="sunCheck">
                                <label class="custom-control-label" for="sunCheck">Sun</label>
                            </div>
                        </div>
                    </div>

1 Ответ

1 голос
/ 07 октября 2019

Вы можете решить эту проблему, добавив значение для каждого флажка.

<div class="row" style="margin-left: 50px;">
  <div class="form-check form-check-inline">
    <div class="custom-control custom-checkbox">
      <input type="checkbox" class="custom-control-input" name="monCheck" id="monCheck" value="1">
      <label class="custom-control-label" for="monCheck">Mon</label>
    </div>
  </div>


  <div class="form-check form-check-inline">
    <div class="custom-control custom-checkbox">
      <input type="checkbox" class="custom-control-input" name="tueCheck" id="tueCheck" value="2">
      <label class="custom-control-label" for="tueCheck">Tue</label>
    </div>
  </div>

  <div class="form-check form-check-inline">
    <div class="custom-control custom-checkbox">
      <input type="checkbox" class="custom-control-input" name="wedCheck" id="wedCheck" value="3">
      <label class="custom-control-label" for="wedCheck">Wed</label>
    </div>
  </div>

  <div class="form-check form-check-inline">
    <div class="custom-control custom-checkbox">
      <input type="checkbox" class="custom-control-input" name="thurCheck" id="thurCheck" value="4">
      <label class="custom-control-label" for="thurCheck">Th</label>
    </div>
  </div>

  <div class="form-check form-check-inline">
    <div class="custom-control custom-checkbox">
      <input type="checkbox" class="custom-control-input" name="friCheck" id="friCheck" value="5">
      <label class="custom-control-label" for="friCheck">Fri</label>
    </div>
  </div>

  <div class="form-check form-check-inline">
    <div class="custom-control custom-checkbox">
      <input type="checkbox" class="custom-control-input" name="satCheck" id="satCheck" value="6">
      <label class="custom-control-label" for="satCheck">Sat</label>
    </div>
  </div>

  <div class="form-check form-check-inline">
    <div class="custom-control custom-checkbox">
      <input type="checkbox" class="custom-control-input" name="sunCheck" id="sunCheck" value="0">
      <label class="custom-control-label" for="sunCheck">Sun</label>
    </div>
  </div>
</div>

Ваш контроллер:

  $event_dow = [];

       if($request->has('monCheck'))
       {
        $event_dow[] = $request->monCheck;
    };

    if($request->has('tueCheck'))
    {
        $event_dow[] = $request->tueCheck;
    };

    if($request->has('wedCheck'))
    {
        $event_dow[] = $request->wedCheck;
    };

    if($request->has('thurCheck'))
    {
        $event_dow[] = $request->thurCheck;
    };

    if($request->has('friCheck'))
    {
        $event_dow[] = $request->friCheck;
    };

    if($request->has('satCheck'))
    {
        $event_dow[] = $request->satCheck;
    };

    if($request->has('sunCheck'))
    {
        $event_dow[] = $request->sunCheck;
    };

Или вы также можете решить ее с помощью jQuery. Попробуйте это

Первая кнопка добавления для отправки запроса.

<button id="submit" type="button">Save</button>

Сценарий:

<script>
  $('#submit').click(function() {
    let check = $('.custom-control-input:checked');
    let eventDow = [];

  check.each(function(i) {
    eventDow[i] = $(this).val()
  });
   console.log(eventDow); // returns array of numbers 
  });
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...