Как организовать регистрационную форму, чтобы правильно обрабатывать эти 4 сценария? - PullRequest
0 голосов
/ 05 мая 2018

У меня есть форма регистрации ниже для регистрации пользователя на конгрессе. Пользователь может зарегистрировать в конгрессе только его, но и других участников. Есть 4 разных сценария для регистрации. Таким образом, регистрационная форма должна обрабатывать эти 4 различных сценария. Но это не работает, только сценарии 1, 2 и 4 работают нормально. Сценарий 3 не работает должным образом.

Знаете ли вы, как получить регистрационную форму, которая поддерживает эти 4 сценария?

Сценарий 1 - это когда: (единственный нормально работающий сценарий)

  • Есть два типа билетов на конгресс, например: «Тип билета 1» и «Тип билета 2»
  • с типом заявки «Тип заявки 1» связан 1 или более пользовательских вопросов, например «Какой у тебя телефон?» а с типом заявки "тип заявки 2" не связан пользовательский вопрос
  • Столбец all_participants в таблице конгрессов имеет значение «1», что означает, что необходимо собрать информацию (имя и фамилию) каждого участника, которого регистрирует пользователь
  • Диаграмма, демонстрирующая, каким должен быть этот сценарий:

enter image description here

Сценарий 2 - это когда:

  • Есть два типа билетов на конгресс, например: «Тип билета 1» и «Тип билета 2»
  • тип билета "тип билета t1" и "тип билета 2" не имеет какого-либо специального вопроса
  • всех участников - «1», что означает, что необходимо собрать информацию о каждом участнике
  • Диаграмма, демонстрирующая, каким должен быть этот сценарий:

enter image description here

Сценарий 3 - это когда:

  • Есть два типа билетов на конгресс, например: «Тип билета 1» и «Тип билета 2»
  • с типом заявки «Тип заявки 1» связан пользовательский вопрос «Какой у тебя телефон?», С типом заявки «Тип заявки 2» не связан пользовательский вопрос
  • всех участников равен «0», что означает, что нет необходимости собирать информацию (имя и фамилию) каждого участника
  • Диаграмма, демонстрирующая, каким должен быть этот сценарий: enter image description here

Сценарий 4 - это когда:

  • Есть два типа билетов на конгресс, например: «Тип билета 1» и «Тип билета 2»
  • с типами заявок "тип заявки 1" и "тип заявки 2" не связан пользовательский вопрос
  • всех участников равен «0», что означает, что нет необходимости собирать информацию (имя и фамилию) каждого участника
  • Диаграмма, демонстрирующая, каким должен быть этот сценарий: enter image description here

Выбранные билеты с предыдущей страницы доступны в переменной "$selectedTypes".

Форма регистрации, которую я сейчас храню в registration.blade.php, выглядит следующим образом:

<form method="post" id="step1formfree" action="">
    {{csrf_field()}}
    @if (!is_null($allParticipants) && is_int($allParticipants))
        @if($allParticipants == 1)
            <p>Please fill all fields. Your tickets will be send to <b>{{ (\Auth::check()) ? Auth::user()->email : old('email')}}</b>.</p>
        @else
            <p>Is not necessary additional info. Your tickets will be send to <b>{{ (\Auth::check()) ? Auth::user()->email : old('email')}}</b>.</p>
        @endif

        <span id="userData" data-name="{{ auth()->user()->name }}" data-surname="{{ auth()->user()->surname }}"></span>

        @foreach($selectedRtypes as $k => $selectedRtype)
            //{{dd($selectedRtype)}}
            @foreach(range(1,$selectedRtype['quantity']) as $val)
                @if($allParticipants == 1)
                    <h6>Participant - {{$val}} - {{$k}}</h6>
                    <div class="form-check">
                        <input class="form-check-input" type="checkbox" id="fill_auth_info{{ $val }}" data-id="{{ $k }}_{{ $val }}"name="fill_with_auth_info">
                        <label class="form-check-label d-flex align-items-center" for="fill_auth_info{{ $val }}">
                            <span class="mr-auto">Fill with auth user info.</span>
                        </label>
                    </div>
                    <div class="form-group font-size-sm">
                        <label for="name{{ $k }}_{{ $val }}" class="text-gray">Name</label>
                        <input type="text"  id="name{{ $k }}_{{ $val }}" name="participant_name[]" required class="form-control" value="">
                    </div>
                    <div class="form-group font-size-sm">
                        <label for="surname{{ $k }}_{{ $val }}" class="text-gray">Surname</label>
                        <input type="text" id="surname{{ $k }}_{{ $val }}" required class="form-control" name="participant_surname[]" value="">
                    </div>
                    @foreach($selectedRtype['questions'] as $customQuestion)
                        <div class="form-group">
                            <label for="participant_question">{{$customQuestion->question}}</label>
                            <input type="text"
                                   @if($customQuestion->pivot->required == "1") required @endif
                                   class="form-control" name="participant_question[]">
                            <input type="hidden" name="participant_question_required[]"
                                   value="{{ $customQuestion->pivot->required }}">
                            <input type="hidden" value="{{ $customQuestion->id }}" name="participant_question_id[]"/>
                        </div>
                    @endforeach
                @else
                    <input type="hidden" value="foo" name="participant_name[]"/>
                    <input type="hidden" value="bar" name="participant_surname[]"/>
                @endif
                <input type="hidden" name="rtypes[]" value="{{ $selectedRtype['id'] }}"/>
            @endforeach
                    <div class="form-group">
            @if ($allParticipants == 0)
                @foreach($selectedRtype['questions'] as $customQuestion)
                        <label for="participant_question">{{$customQuestion->question}}</label>
                        <input type="text"
                               @if($customQuestion->pivot->required == "1") required @endif
                               class="form-control" name="participant_question[]">
                        <input type="hidden" name="participant_question_required[]"
                               value="{{ $customQuestion->pivot->required }}">
                        <input type="hidden" value="{{ $customQuestion->id }}" name="participant_question_id[]"/>
                    </div>
                @endforeach
            @endif
        @endforeach
    @endif
    <input type="submit" href="#step2"
           id="goToStep2Free" class="btn btn-primary btn float-right next-step" value="Go to step 2"/>
</form>

«{{dd($selectedRtype)}}», если нет пользовательских вопросов и были выбраны 2 билета с одинаковым типом билета, показывает:

array:6 [▼
  "quantity" => "2"
  "price" => 0
  "subtotal" => 0
  "total" => 0
  "questions" => Collection {#232 ▼
    #items: []
  }
  "id" => 1
]

Если в области отображаются пользовательские вопросы:

array:6 [▼
  "quantity" => "1"
  "price" => 0
  "subtotal" => 0
  "total" => 0
  "questions" => Collection {#232 ▼
    #items: array:1 [▼
      0 => Question {#233 ▼
        #fillable: array:3 [▶]
        #connection: "mysql"
        #table: null
        #primaryKey: "id"
        #keyType: "int"
        +incrementing: true
        #with: []
        #withCount: []
        #perPage: 15
        +exists: true
        +wasRecentlyCreated: false
        #attributes: array:6 [▶]
        #original: array:9 [▼
          "id" => 1
          "question" => "What is your phone?"
          "type" => "text"
          "congress_id" => 1
          "created_at" => "2018-05-06 12:24:41"
          "updated_at" => "2018-05-06 12:24:41"
          "pivot_registration_type_id" => 1
          "pivot_question_id" => 1
          "pivot_required" => 1
        ]
        #changes: []
        #casts: []
        #dates: []
        #dateFormat: null
        #appends: []
        #dispatchesEvents: []
        #observables: []
        #relations: array:1 [▶]
        #touches: []
        +timestamps: true
        #hidden: []
        #visible: []
        #guarded: array:1 [▶]
      }
    ]
  }
  "id" => 1
]

Отношения, имеющие отношение к вопросу:

1 to many between Congresses and Registrations
1 to many between Congresses and TicketTypes
1 to many between Registrations and Participants
1 to many between TicketTypes and Participants
1 to many between Participants and Answers
1 to many between Questions and Answers
Many to Many between TicketTypes and Questions
1 to many between Congresses and Questions

1 Ответ

0 голосов
/ 05 мая 2018

ну, у вас недостаточно описания в вашем вопросе, но я думаю, что из-за этой строки:

<h6>Participant - 1 - {{$test}}</h6>

эта строка не имеет условий и будет повторяться во всем цикле Это потому, что вы берете на буксир. я надеюсь, что это поможет.

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