我想知道如何在Yii2框架中创建没有模型的表单,因为我正在创建mailchimp注册表单,因此下面的代码不需要模型生成表单,但是您可以看到它使用模型。 / p>
<?php $form = ActiveForm::begin(['id' => 'login-form']); ?>
<?= $form->field($model, 'title')->textInput(['maxlength' => 255]) ?>
<?php ActiveForm::end(); ?>
我是否仍然使用activeform,如何在不抛出错误的情况下删除$ model变量?
答案 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建议您使用模型的原因。