Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про 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
Сообщение
someweb »
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
-
riaron
- Сообщения: 97
- Зарегистрирован: 2018.12.04, 14:12
Сообщение
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
Сообщение
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
Сообщение
riaron »
поменял все, все заработало, но проблема не решилась.
после обновления страницы вот эта часть кода засоряет БД:
-
someweb
- Сообщения: 552
- Зарегистрирован: 2017.03.09, 10:12
Сообщение
someweb »
Код контроллера полностью выложите.
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
-
riaron
- Сообщения: 97
- Зарегистрирован: 2018.12.04, 14:12
Сообщение
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]);
}
}