私はレンタル自転車プラットフォームを開発していますが、予約フォーム (ステップ 2) で立ち往生しています。
最初のステップで、ユーザーは予約の日付と個人データを選択しました。2 番目のステップでは、レンタルしたい自転車の数を、0 から x (その日に利用可能な自転車まで) の選択ウィジェットを含むフォームに基づいて選択できます。
問題は、このフォームを管理する方法がわからないことです。今では、「Bike」エンティティのコレクションを持つ「BookingType」があります。その時点で、ユーザーはレンタルする自転車を選択できますが、数量は選択できません。バイクを含む「BookingBikeType」を作成し、BookingType はこの新しい「BookingBikeType」のコレクションを含みますか??
それが役立つ場合は、スキーマと予約の種類を貼り付けました。
BEM\ReservaBundle\Entity\Reserva:
type: entity
table: null
fields:
id:
type: integer
id: true
generator:
strategy: AUTO
inici:
type: datetime
fi:
type: datetime
import:
type: float
nullable: true
manyToMany:
bicicletes:
targetEntity: BEM\BikeBundle\Entity\Bike
oneToMany:
reserva_personalitzacio:
targetEntity: ReservaPersonalitzacio
mappedBy: reserva
manyToOne:
client:
targetEntity: BEM\ClientBundle\Entity\Client
cascade: [persist]
lloc_recollida:
targetEntity: ReservaLlocRecollida
lifecycleCallbacks: { }
class ReservaType extends AbstractType {
private $translator;
public function __construct($translator = null) {
$this->translator = $translator;
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('inici', null, array(
'widget'=>'single_text',
'format'=>'yyyy-MM-dd',
'attr'=>array('class'=>'diaInicio',
'placeholder'=>(($this->translator === null) ? '' : $this->translator->trans('Fecha inicio')),
'readonly'=>'readonly'
)
))
->add('fi', null, array(
'widget'=>'single_text',
'format'=>'yyyy-MM-dd',
'attr'=>array('class'=>'diaFinal',
'placeholder'=>(($this->translator === null) ? '' : $this->translator->trans('Fecha final')),
'readonly'=>'readonly'
)
))
->add('import')
->add('lloc_recollida', null, array('empty_value'=>false))
->add('nou_lloc_recollida', new ReservaLlocRecollidaType($this->translator), array('required'=>false))
->add('client', new ClientType($this->translator))
->add('bicicletes')
//->add('bicicletes', new ReservaBicicletaType())
;
}
ステップ 2 で選択した自転車ごとに、ユーザーが「自転車の高さ」、「車輪のサイズ」などの予約をカスタマイズできる ReservaPersonalitzacio をいくつでも作成します。
そう?露出した問題をどのように解決しますか?
ありがとう!