Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

276
Visualizações
Vincular el tiempo de trabajo de un formulario a otro

Tengo un modelo en el que podemos elegir el horario de apertura de la institución para cada día de la semana, de tal y tal a tal y tal, por ejemplo Monday 12:00 AM - 11:30 PM

 <?php namespace common\models; use yii\behaviors\TimestampBehavior; use yii\db\ActiveRecord; use yii\db\Expression; class WorkHours extends _source_WorkHours { public const WEEK_DAY_MON = 'Mon'; public const WEEK_DAY_TUE = 'Tue'; public const WEEK_DAY_WED = 'Wed'; public const WEEK_DAY_THU = 'Thu'; public const WEEK_DAY_FRI = 'Fri'; public const WEEK_DAY_SAT = 'Sat'; public const WEEK_DAY_SUN = 'Sun'; /** * {@inheritdoc} */ public function behaviors(): array { return [ 'timestamp' => [ 'class' => TimestampBehavior::class, 'attributes' => [ ActiveRecord::EVENT_BEFORE_INSERT => ['created_at'], ], 'value' => new Expression('NOW()'), ], ]; } public static function weekDays(): array { return [ self::WEEK_DAY_MON => 'Monday', self::WEEK_DAY_TUE => 'Tuesday', self::WEEK_DAY_WED => 'Wednesday', self::WEEK_DAY_THU => 'Thursday', self::WEEK_DAY_FRI => 'Friday', self::WEEK_DAY_SAT => 'Saturday', self::WEEK_DAY_SUN => 'Sunday', ]; } public static function getWeekDay(string $val): string { $ar = self::weekDays(); return $ar[$val] ?? $val; } public static function hoursList(): array { $list = []; for ($i = 0; $i < 24; $i++) { $A = 'AM'; $n = $i; if ($i >= 12) { $A = 'PM'; $n = $i - 12; } $n = $n < 10 ? '0' . $n : $n; $_A = ($i === 12 ? 'AM' : $A); $list[$i . '.00'] = $n . '.00 ' . ($i === 0 ? 'PM' : $_A); $list[$i . '.30'] = $n . '.30 ' . $A; } return $list; } }

A continuación, utilizo este modelo al crear una institución y la posibilidad de elegir el horario de apertura allí.

 <div class="form-group"> <label class="control-label col-sm-3">Wokr Hours</label> <div class="col-sm-6"> <div class="form-group"> <?php foreach (WorkHours::weekDays() as $weekDay => $day) { ?> <div class="col-sm-2"><?= $weekDay ?></div> <div class="col-sm-5"> <?= $form->field( $restaurantWorkHoursForm, RestaurantWorkHoursForm::getAttributeName($weekDay, 'open'), ['template' => '<div class="col-sm-12">{input}</div>'] )->dropDownList(WorkHours::hoursList(), ['prompt' => ''])->label(false) ?> </div> <div class="col-sm-5"> <?= $form->field( $restaurantWorkHoursForm, RestaurantWorkHoursForm::getAttributeName($weekDay, 'close'), ['template' => '<div class="col-sm-12">{input}</div>'] )->dropDownList(WorkHours::hoursList(), ['prompt' => ''])->label(false) ?></div> <?php } ?> </div> </div> </div>

Yo también uso este modelo al reservar un lugar en una institución donde puedes elegir la hora, pero aquí puedes elegir cualquier hora del día.

 <a class="btn btn-fourth <?= $restaurantReservationForm->getErrors('time') ? 'btn-error' : '' ?>" id="reservation-time" role="button" data-bs-toggle="dropdown" aria-expanded="false"> <span class="icon br-clock"></span> <span class="js-value"> <?= $restaurantReservationForm->time ? WorkHours::hoursList()[$restaurantReservationForm->time] : '-- : --' ?> </span> </a> <ul class="dropdown-menu dropdown-menu-height-fixed" aria-labelledby="reservation-time"> <?php foreach (WorkHours::hoursList() as $k => $v) { ?> <li><a class="dropdown-item <?= $restaurantReservationForm->time === $k ? 'active' : '' ?>" href="#" data-value="<?= $k ?>"><?= $v ?></a></li> <?php } ?> </ul>

Ahora cual es la pregunta. tengo dos formas En uno se indicaba el tiempo, en el otro debía haber una elección de tiempo de la primera forma. ¿Cómo se puede vincular el horario de apertura del establecimiento que te indicamos con la elección del horario de reserva?

Digamos que tenemos un horario de trabajo de 12:00 AM - 11:30 PM , cualquier horario está disponible en la reserva, pero es necesario que haya una opción solo dentro del horario de apertura de la institución que especificamos anteriormente, es decir, de 12:00 AM a 11:30 PM , y así todos los días, si la hora no se selecciona en la institución para algún día, entonces la reserva también estará vacía

¿Hay alguna manera de hacer esto a través de json ?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Por supuesto, esto tiene solución, pero deberá manejarlo tanto en el lado del servidor como en el lado del cliente. La necesidad en el lado del servidor es que se asegure de que no haya travesuras realizadas por un usuario técnicamente avanzado y en el lado del cliente su necesidad es ayudar al usuario a saber de qué período puede elegir el valor.

En el lado del servidor, tiene varias opciones en términos de almacenamiento, pero un enfoque factible (asumiendo que el intervalo elegido también se reutilizará en el futuro) es almacenar este valor en la base de datos. Eso significaría que necesitará un CRUD para este valor en el lado del servidor y una función API que atienda las solicitudes del lado del cliente, diciéndole al usuario cuál fue su elección. En el lado del servidor, puede codificar cosas en JSON a través json_encode y enviar el resultado al cliente.

Necesitará un validador tanto del lado del servidor como del lado del cliente para determinar si una fecha dada está dentro del intervalo especificado.

En resumen, necesitas:

  • Soporte de esquema de base de datos para este intervalo
  • CRUD del lado del servidor de aplicaciones
  • API del lado del servidor
  • Funcionalidad del lado del cliente que maneja la solicitud de API
  • Validador tanto en el servidor como en el lado del cliente
  • Manejo de la lógica en la representación y manejo de la interfaz de usuario mediante el validador
  • Manejo de la lógica cuando se almacena la fecha o el intervalo de fechas elegido
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda