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

时间:2015-02-04 21:09:25

标签: javascript php frameworks yii2 mailchimp

我想知道如何在Yii2框架中创建没有模型的表单,因为我正在创建mailchimp注册表单,因此下面的代码不需要模型生成表单,但是您可以看到它使用模型。 / p>

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

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

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

我是否仍然使用activeform,如何在不抛出错误的情况下删除$ model变量?

3 个答案:

答案 0 :(得分:10)

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 - 小部件。 然后,您可以先在操作中运行正确的验证,然后将数据传递给MailChimp。如果您想在内容

的验证中运行HTML Purifier,可能会很方便

答案 1 :(得分:5)

使用Html输入 积极的形式 <?=Html::input('text','','',['class'=>'form-control'])?>

答案 2 :(得分:0)

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