我想知道如何在 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 建议你使用模型。