Автоматически отправляется форма при обновлении

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
riaron
Сообщения: 97
Зарегистрирован: 2018.12.04, 14:12

Автоматически отправляется форма при обновлении

Сообщение riaron »

При обновлении страницы корзины автоматически отправляются данные в таблицу даже если $phone не введен.

Код: Выделить всё

if(isset($submitt)){
    $phone = filter_input(INPUT_POST, 'phone');
    if($phone!=null) {
        $modell = new Orderid();
        $basket = Basket::find()->where(['user' => $user])->all();
        $a = generateCode(15);
        foreach ($basket as $bask) {
            global $at;
            $model = new Orders();
            $model->name = $bask->name;
            $model->user = $bask->user;
            $model->good_id = $bask->good_id;
            $model->producer = $bask->producer;
            $model->price = $bask->price;
            $model->good_qtty = $bask->good_qtty;
            $model->goodtype = $bask->goodtype;
            $model->phone = $phone;
            $model->orderdate = date("Y.m.d H:i:s");
            $model->orderid = $a;
            $model->save();
            $at += $bask->good_qtty * $bask->price;


        }
        $modell->orderid = $a;
        $modell->save();
        Basket::deleteAll(['user' => $user]);
    }else{
        echo "Введите Телефон";
    }
    echo '<a style="color:red">'.$a."</a>";
}

 <?php $form = ActiveForm::begin(['options' => ['id' => 'testForm', 'options' => ['enctype' => 'multipart/form-data']]])?>
    <?= Html::input('text', 'phone','', ['class' => 'usr'])?>

    <?= Html::submitButton('Отправить', ['name' => 'submitt','class' => 'btn btn-success'])?>
    <?php ActiveForm::end() ?>
someweb
Сообщения: 552
Зарегистрирован: 2017.03.09, 10:12

Re: Автоматически отправляется форма при обновлении

Сообщение someweb »

Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
riaron
Сообщения: 97
Зарегистрирован: 2018.12.04, 14:12

Re: Автоматически отправляется форма при обновлении

Сообщение riaron »

Как тогда получить значение phone отсюда чтобы в модели добавить?

Код: Выделить всё

<?php $form = ActiveForm::begin(['options' => ['id' => 'inputform', 'options' => ['class' => 'inputform','enctype' => 'multipart/form-data']]])?>
    <?= $form->field($model, 'phone')?>
    <?= Html::submitButton('Отправить', ['class' => 'btn btn-success'])?>
    <?php ActiveForm::end() ?>
Вот тот же код в правильном виде.basket

Код: Выделить всё

class Basket extends ActiveRecord{
    public function addToOrders(){
        $modell = new Orderid();
        $basket = Basket::find()->where(['user' => $user])->all();
        $a = generateCode(15);
        foreach ($basket as $bask) {
            global $at;
            $model = new Orders();
            $model->name = $bask->name;
            $model->user = $bask->user;
            $model->good_id = $bask->good_id;
            $model->producer = $bask->producer;
            $model->price = $bask->price;
            $model->good_qtty = $bask->good_qtty;
            $model->goodtype = $bask->goodtype;
            $model->phone = $phone;
            $model->orderdate = date("Y.m.d H:i:s");
            $model->orderid = $a;
            $model->save();
            $at += $bask->good_qtty * $bask->price;


        }
        $modell->orderid = $a;
        $modell->save();
        Basket::deleteAll(['user' => $user]);
    }
    public function attributeLabels(){
        return [
           'phone'=> 'Телефон',

         ];
    }

    public function rules(){
        return [
           [ ['phone',], 'required'],
        ];
    }
someweb
Сообщения: 552
Зарегистрирован: 2017.03.09, 10:12

Re: Автоматически отправляется форма при обновлении

Сообщение someweb »

Возьмите пример отсюда
https://www.yiiframework.com/doc/guide/ ... tart-forms
Уберите email, переименуйте name в phone
В контроллере будет примерно так

Код: Выделить всё

public function actionEntry()
{
    $entry = new EntryForm();

    if ($entry->load(Yii::$app->request->post()) && $entry->validate()) {
        $modell = new Orderid();
        $basket = Basket::find()->where(['user' => $user])->all();
        $a = generateCode(15);
        foreach ($basket as $bask) {
            global $at;
            $model = new Orders();
            $model->name = $bask->name;
            $model->user = $bask->user;
            $model->good_id = $bask->good_id;
            $model->producer = $bask->producer;
            $model->price = $bask->price;
            $model->good_qtty = $bask->good_qtty;
            $model->goodtype = $bask->goodtype;
            $model->phone = $entry->phone;
            $model->orderdate = date("Y.m.d H:i:s");
            $model->orderid = $a;
            $model->save();
            $at += $bask->good_qtty * $bask->price;


        }
        $modell->orderid = $a;
        $modell->save();
        Basket::deleteAll(['user' => $user]);


        return $this->render('entry-confirm', ['model' => $entry]);
    } else {
        // либо страница отображается первый раз, либо есть ошибка в данных
        return $this->render('entry', ['model' => $entry]);
    }
}
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
riaron
Сообщения: 97
Зарегистрирован: 2018.12.04, 14:12

Re: Автоматически отправляется форма при обновлении

Сообщение riaron »

поменял все, все заработало, но проблема не решилась.
после обновления страницы вот эта часть кода засоряет БД:

Код: Выделить всё

$modell->orderid = $a;
        $modell->save()
someweb
Сообщения: 552
Зарегистрирован: 2017.03.09, 10:12

Re: Автоматически отправляется форма при обновлении

Сообщение someweb »

Код контроллера полностью выложите.
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
riaron
Сообщения: 97
Зарегистрирован: 2018.12.04, 14:12

Re: Автоматически отправляется форма при обновлении

Сообщение riaron »

Вот контроллер

Код: Выделить всё

public function actionBaskets()
    {
        $baskets = new Baskets();
        if(Yii::$app->user->isGuest){$user=Yii::$app->request->userIP;}else{$user=Yii::$app->user->identity->username;}

        if ($baskets->load(Yii::$app->request->post()) && $baskets->validate()) {
            $modell = new Orderid();
            $basket = Basket::find()->where(['user' => $user])->all();
            $a = generateCode(15);
            foreach ($basket as $bask) {
                global $at;
                $model = new Orders();
                $model->name = $bask->name;
                $model->user = $bask->user;
                $model->good_id = $bask->good_id;
                $model->producer = $bask->producer;
                $model->price = $bask->price;
                $model->good_qtty = $bask->good_qtty;
                $model->goodtype = $bask->goodtype;
                $model->phone = $baskets->phone;
                $model->orderdate = date("Y.m.d H:i:s");
                $model->orderid = $a;
                $model->save();
                $at += $bask->good_qtty * $bask->price;


            }
            $modell->orderid = $a;
            $modell->save();
            Basket::deleteAll(['user' => $user]);


            return $this->render('baskets', ['model' => $baskets]);
        } else {
            // либо страница отображается первый раз, либо есть ошибка в данных
            return $this->render('baskets', ['model' => $baskets]);
        }
    }
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: Автоматически отправляется форма при обновлении

Сообщение urichalex »

После сохранения вызывайте $this->refresh()
Ответить