Yii2 create a form without a model

con322 picture con322 · Feb 4, 2015 · Viewed 14k times · Source

I was wondering how can I create a form without a model in Yii2 framework as I am creating a mailchimp signup form so a model isn't necessary the below code generates a form however as you can see it uses a model.

<?php $form = ActiveForm::begin(['id' => 'login-form']); ?>

<?= $form->field($model, 'title')->textInput(['maxlength' => 255]) ?>

<?php ActiveForm::end(); ?>

Do I still use activeform, how can I remove the $model variable without it throwing up an error?

Answer

Blizz picture Blizz · May 22, 2015

Yii2 has this nice little thingy called a DynamicModel. This basically allows you to create a model on the fly so that you can still use all the ActiveForm and validation goodies, but without having to commit to writing an entire model class for it. Might be interesting.

Example from the documentation:

public function actionSearch($name, $email)
{
   $model = DynamicModel::validateData(compact('name', 'email'), [
       [['name', 'email'], 'string', 'max' => 128],
       ['email', 'email'],
   ]);
   if ($model->hasErrors()) {
      // validation fails
   } else {
      // validation succeeds
   }
}

Obviously these instance can also be used for the ActiveForm-widget. You can then run proper validation in your actions first and then pass on your data to MailChimp. Might be handy if you want to run HTML Purifier as part of that validation for the content