Yii2 创建一个没有模型的表单


Yii2 create a form without a model

我想知道如何在 Yii2 框架中创建没有模型的表单,因为我正在创建一个 mailchimp 注册表单,因此不需要模型,下面的代码生成一个表单,但如您所见,它使用模型。

<?php $form = ActiveForm::begin(['id' => 'login-form']); ?>
<?= $form->field($model, 'title')->textInput(['maxlength' => 255]) ?>
<?php ActiveForm::end(); ?>

我是否仍然使用 activeform,如何删除 $model 变量而不会引发错误?

Yii2 有一个漂亮的小东西叫做 DynamicModel 。这基本上允许您动态创建一个模型,以便您仍然可以使用所有ActiveForm和验证好东西,但不必承诺为其编写整个模型类。可能会很有趣。

文档中的示例:

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
   }
}

显然,这些实例也可以用于ActiveForm -widget。然后,您可以先在操作中运行适当的验证,然后将数据传递给MailChimp。如果要运行HTML Purifier作为内容验证的一部分,可能会很方便

使用 Html 输入具有活动形式 <?=Html::input('text','','',['class'=>'form-control'])?>

正如@DamienPirsy建议的那样 - 使用普通。如果你想使用 yii2 功能——使用 Class yii''helpers''BaseHtml (http://www.yiiframework.com/doc-2.0/yii-helpers-basehtml.html) 有所有方法可以根据需要构建任何表单。然后,您可以在应用程序的任何控制器中的任何操作中操作它。但这不是真正的MVC方式。这就是为什么 Yii/Yii2 建议你使用模型。