Loading...
nmihaylov avatar nmihaylov 1 Точки

Добавяне на бойни единици

Здравейте,

 

Опитвам се да направя правенето на бойни единици, но нещо не мога да се оправя с формата, която трябва да се събмитне.

Как да направя, така че на всеки бутон "Arm units" да има по 1 форма, която да сочи към @Route("/armUnits", name="arm_units")

В момента ми се получава това:

В units/index.html.twig имам:

    <h3>Barracks - arm more units</h3>
    <table class="table table-striped table-hover">
        <thead>
        <tr>
            <th>Name</th>
            <th>Costs per 1 unit</th>
            <th>Count</th>
            <th>Add units</th>
        </tr>
        </thead>
        <tbody>
        {% for unit in units %}
            {{ form_start(form) }}
            <tr>
                <td>{{ unit.name }}</td>
                <td>
                    {% for unit_cost in unit.costs %}
                        <b>{{ unit_cost.resource.name }}</b>: {{ unit_cost.amount }}
                    {% endfor %}
                </td>
                <td>
                {{ form_widget(form) }}
                </td>
                <td>
                    <button type="submit" class="btn btn-primary btn-xs">Arm units</button>
                </td>
            </tr>
            {{  form_row(form._token) }}
            {{ form_end(form) }}
        {% endfor %}
        </tbody>
    </table>

UnitType:

class UnitType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('unit_count', IntegerType::class);
        $builder->add('unit_id', HiddenType::class);
    }

    public function configureOptions(OptionsResolver $resolver)
    {
            $resolver->setDefaults(array(
                'data_class' => Unit::class,
            ));
    }

    public function getName()
    {
        return 'kingdom_game_bundle_unit';
    }
}

UnitsController:


class UnitsController extends KingdomCurrentController
{
    /**
     * @Route("/units", name="units")
     * @return \Symfony\Component\HttpFoundation\Response
     */
    public function indexAction()
    {
        /** @var Kingdom $kingdom */
        $kingdom = $this->getDoctrine()->getRepository(Kingdom::class)->find($this->getKingdomId());
        $units = $this->getDoctrine()->getRepository(Unit::class)->findAll();
        $unit = new Unit();
        $form = $this->createForm(UnitType::class);


        return $this->render('units/index.html.twig',
            array(
                'units' => $units,
                'kingdom' => $kingdom,
                'form' => $form->createView()
            ));

    }


    /**
     * @Route("armUnits")
     * @param Request $request
     * @return \Symfony\Component\HttpFoundation\Response
     */
    public function armUnits(Request $request){
        $kingdom = $this->getDoctrine()->getRepository(Kingdom::class)->find($this->getKingdomId());
        $units = $this->getDoctrine()->getRepository(Unit::class)->findAll();
        $unit = new Unit();
        $form = $this->createForm(UnitType::class, $unit);

        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) {...}

        return $this->render('units/index.html.twig',
            array(
                'units' => $units,
                'kingdom' => $kingdom,
                'form' => $form->createView()
            ));
    }

}

 

0
PHP Web Development 12/12/2016 15:44:43
RoYaL avatar RoYaL Trainer 6847 Точки

В момента ми изглежда да е точно така както си казал, че искаш да е. Какъв е проблемът? Няма го текстовото поле за брой единици ли?

0
nmihaylov avatar nmihaylov 1 Точки

Да, има само 1 поле за брой единици, а трябва да са 2 - по 1 поле за всеки вид бойни единици.

0
12/12/2016 17:09:03
RoYaL avatar RoYaL Trainer 6847 Точки

пробвай вместо form.widget да бъде нормално текстово поле <input type="text" name="units[unit_count]" ....

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.