2017-05-03 1 views
1

Also versuche ich, Informationen über ein Yii2-Formular zu erhalten und in der Datenbank zu speichern, obwohl es nicht funktioniert. Ich erhalte die Erfolgsmeldung, aber es werden keine Änderungen in der Datenbank vorgenommen.Speichern von Formulardaten in die Datenbanktabelle YII2

Controller-Datei:

<?php 

namespace frontend\modules\portfolio\controllers; 

use Yii; 
use yii\web\Controller; 
use frontend\modules\portfolio\models\LandingPage; 
use common\models\HelloMessage; 

class HelloController extends Controller { 

    public function actionIndex() { 

     $form_model = new HelloMessage(); 
     $request = Yii::$app->request; 

     if ($form_model->load(Yii::$app->request->post())) { 
      $form_model->name = $request->post('name'); 
      $form_model->email = $request->post('email'); 
      $form_model->message = $request->post('message'); 

      $form_model->save(); 
      Yii::$app->getSession()->setFlash('success', 'Your message has been successfully recorded.'); 
     } 

     return $this->render('index', [ 
      'form_model' => $form_model 
     ]); 
    } 

} 

Und dies würde die Ansicht Datei sein:

 <div class="box"> 
      <?= Yii::$app->session->getFlash('success'); ?> 

      <?php $form = ActiveForm::begin(); ?> 

      <?= $form->field($form_model, 'name')->textInput(['maxlength' => true]) ?> 

      <?= $form->field($form_model, 'email')->textInput(['maxlength' => true]) ?> 

      <?= $form->field($form_model, 'message')->textarea(['maxlength' => true]) ?> 

      <div class="form-group"> 
       <?= Html::submitButton('Submit', ['name' => 'contact-button']); ?> 
      </div> 

      <?php ActiveForm::end(); ?> 
     </div> 
+0

Warum überprüfen Sie nicht, ob 'save()' 'true' zurückgegeben hat? – Bizley

Antwort

1

Wahrscheinlich Ihr Modell nicht Validierung. Sie können mit $form_model->save(false) deaktivieren, wenn es aus ist, aber es ist besser zu wissen, warum es nicht validiert. Tun Sie dies: $ modell-> save (false) - ohne Validierung:

if (!$form_model->validate()) { 
    return $this->render('index', [ 
      'form_model' => $form_model 
     ]); 
} 
+0

Es wird immer noch nicht funktionieren. –

+0

Ja, aber sehen Sie keine Fehler? – gmc

+0

Es werden keinerlei Fehler angezeigt. Ich habe var die Formularfelder in der View-Datei ausgegeben - nach der Formularübergabe sind keine Daten im $ form_model-> name vorhanden. –

2

Änderung Zeige Aktion wie die

$form_model = new HelloMessage(); 
    $postData = Yii::$app->request->post(); 

    if ($form_model->load($postData)) { 
     if (!$form_model->save()) 
      print_r($form_model->getErrors()); // this would be helpful to find problem. 
     else 
      Yii::$app->getSession()->setFlash('success', 'Your message has been successfully recorded.'); 
    } 

    return $this->render('index', [ 
     'form_model' => $form_model 
    ]); 
} 
0

Ok, also habe ich die Lösung gefunden. Wird versuchen, die Validierungsregeln in der Zukunft zu sortieren.

Verwandte Themen