CakePHP - несколько форм с различными действиями на одной странице - PullRequest
0 голосов
/ 25 июля 2011

На моей домашней странице есть две разные формы: одна для регистрации пользователя и одна для входа в систему.Обе формы указывают на одну и ту же модель, но на разные действия.Проблема в том, что если вы отправите одну из форм, она также будет запускать действие в другой форме, поэтому, если я пытаюсь войти в систему, она отключит действие регистрации в контроллере, как, например, при попытке регистрации..

Я уже проверил это решение , но оно кажется слишком сложным из-за чего-то такого простого, не говоря уже о том, что оно загромождает папку моих моделей дополнительными моделями, которые практически бесполезны, за исключением одного действия.

РЕДАКТИРОВАТЬ: у меня нет этой части моего проекта в Auth, у меня есть административная маршрутизация и настройка раздела администратора в Auth, но в не-административных частях я использую свою собственную обработку сеанса и пользователявалидация.

Вот код для моих форм:

Это регистрационная форма:

echo $this->Form->create('Fonyker', array('action' => 'add'));
            echo $this->Form->input('username', array(
                'div' => array(
                    'class' => 'span-8'
                ),
                'class' => 'input-text long',
                'id' => 'FonykerUsernameRegister',
                'label' => array(
                    'class' => 'inlined',
                    'text' => ''
                ),
                'placeholder' => 'Username',
                'onsubmit' => 'return false;'
            ));
            echo $this->Form->input('email', array(
                'div' => array(
                    'class' => 'span-8'
                ),
                'class' => 'input-text long',
                'label' => array(
                    'class' => 'inlined',
                    'text' => ''
                ),
                'placeholder' => 'Email',
                'onsubmit' => 'return false;'
            ));
            echo $this->Form->input('password', array(
                'div' => array(
                    'class' => 'span-8'
                ),
                'class' => 'input-text long',
                'id' => 'FonykerPasswordRegister',
                'label' => array(
                    'class' => 'inlined',
                    'text' => ''
                ),
                'placeholder' => 'Password',
                'onsubmit' => 'return false;'
            ));
            echo $this->Form->input('name', array(
                'div' => array(
                    'class' => 'span-8'
                ),
                'class' => 'input-text long',
                'label' => array(
                    'class' => 'inlined',
                    'text' => ''
                ),
                'placeholder' => 'Name',
                'onsubmit' => 'return false;'
            ));
        ?>
        <div class="span-8 required">
            <label for="FonykerBirthdate" class="inlined">From</label>
            <input id="FonykerBirthdate" type="text" onsubmit="return false;" placeholder="Birthdate" name="data[Fonyker][birthdate]" class="datepicker input-text long" enabled="false">
        </div>
        <?php

            $options = array('M' => 'M', 'F' => 'F');
            $attributes = array(
                'empty' => 'Gender',
                'class' => 'input-combo span-8'
            );

            echo $this->Form->select('gender', $options, NULL, $attributes);

            echo $this->Form->submit('',array(
                'class' => 'signup-button', 
                'id' => 'signup-button'
            ));

            echo $this->Form->end();
        ?>

И форма входа:

echo $this->Form->create('Fonyker', array('action' => 'login'));
                    echo $this->Form->input('username', array(
                        'div' => array(
                            'class' => 'span-3'
                        ),
                        'class' => 'input-text short',
                        'id' => 'FonykerUsernameLogin',
                        'label' => array(
                            'class' => 'inlined',
                            'text' => ''
                        ),
                        'placeholder' => 'Username'
                    ));
                    echo $this->Form->input('password', array(
                        'div' => array(
                            'class' => 'span-3',
                        ),
                        'class' => 'input-text short',
                        'id' => 'FonykerPasswordLogin',
                        'label' => array(
                            'class' => 'inlined',
                            'text' => ''
                        ),
                        'placeholder' => 'Password'
                    ));

                    echo $this->Form->submit('',array(
                        'div' => array(
                            'class' => 'span-1'
                        ),
                        'class' => 'login-button', 
                    ));

                    echo $this->Form->input('Fonyker.remember', array(
                        'div' => array(
                            'class' => 'span-3',
                        ),
                        'type' => 'checkbox', 
                        'label' => array(
                            'text' => 'Remember me',
                            'style' => 'margin-left:-10px;'
                        ), 
                        'value' => 'yes',
                        'class' => 'span-1'
                    ));

                    echo $this->Html->link(__("Forgot it?", TRUE), array('controller' => "pages", 'action' => "recover_password" ), array('class' => 'span-2'));

                    echo $this->Form->end();
                ?>

1 Ответ

0 голосов
/ 12 августа 2011

В конце концов, проблема заключалась просто в именовании моих форм, вы должны убедиться, что имена форм и полей не перекрываются, если они принадлежат одному контроллеру, и обязательно правильно завершить формы.

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