Yii2 创建一个没有模型的表单
Posted
技术标签:
【中文标题】Yii2 创建一个没有模型的表单【英文标题】:Yii2 create a form without a model 【发布时间】:2015-04-04 13:43:37 【问题描述】:我想知道如何在 Yii2 框架中创建一个没有模型的表单,因为我正在创建一个 mailchimp 注册表单,所以模型不是必需的,下面的代码会生成一个表单,但是你可以看到它使用了一个模型。
<?php $form = ActiveForm::begin(['id' => 'login-form']); ?>
<?= $form->field($model, 'title')->textInput(['maxlength' => 255]) ?>
<?php ActiveForm::end(); ?>
我仍然使用 activeform,如何删除 $model 变量而不引发错误?
【问题讨论】:
不知道 YII,但你总是可以使用普通的 ol' html.... @DamienPirsy 是的,我只是想知道这是否有可能,但正如你所说,普通的 html 可以完成这项工作。 @DamienPirsy 这就是要走的路,但是 YII2 在表单方面很糟糕,几乎不可能将表单输入到模型中。不使用框架的好理由! 【参考方案1】: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
作为内容验证的一部分,可能会很方便
【讨论】:
动态模型的好文章yiiframework.com/wiki/759/create-form-with-dynamicmodel【参考方案2】:使用 Html 输入
以主动形式
<?=Html::input('text','','',['class'=>'form-control'])?>
【讨论】:
请填写您的答案。您是否建议使用 html 助手来构建 mailchimp 订阅表单? @MEM 他提供了正确的答案恕我直言。他还能提供什么?这正是您需要的小部件。【参考方案3】:正如@DamienPirsy 建议的那样 - 使用普通的。如果你想为它使用 yii2 特性 - 使用 Class yii\helpers\BaseHtml (http://www.yiiframework.com/doc-2.0/yii-helpers-basehtml.html) 有所有方法来构建任何你想要的表单。然后,您可以在应用程序的任何控制器中的任何操作中操作它。但这不是真正的 MVC 方式。这就是 Yii/Yii2 建议你使用模型的原因。
【讨论】:
感谢您的建议/信息。那么,即使将帖子数据直接从应用程序发送到 mailchimp 列表,您是否建议我使用模型?以上是关于Yii2 创建一个没有模型的表单的主要内容,如果未能解决你的问题,请参考以下文章