【问题标题】:ActiveForm without model yii2没有模型 yii2 的 ActiveForm
【发布时间】:2018-09-21 16:47:03
【问题描述】:

我想创建没有模型的ActiveForm,以防万一。我确实尝试过dynamicModel,但我遇到了一些错误:

use yii\base\DynamicModel;
$model = DynamicModel::validateData(compact('KOMENTAR'), [
   [['KOMENTAR'], 'string', 'max' => 128],
]);

这是我要创建的表单

<br>
<?php $form = ActiveForm::begin([
    'method' => 'post',
]); ?>

<?= $form->field($model, 'KOMENTAR')->textarea(['rows' => 6])->label(false) ?>

<div class="form-group">
    <?= Html::submitButton('POST', ['class' => 'btn btn-primary']) ?>
</div>

这是错误

Getting unknown property: yii\base\DynamicModel::KOMENTAR

【问题讨论】:

  • 您在模型页面中定义公共 $KOMENTAR

标签: yii2 yii2-advanced-app yii2-basic-app


【解决方案1】:

通常Active项目用于与模型一起工作,但 Yii2 有一个名为 Html 的辅助类来使用与经典 HTML 相同的项目。

使用Html 中的beginForm() 方法。并尝试类似的方法:

use yii\helpers\Html;

<?= Html::beginForm(['/controller/view', 'id' => $model->id], 'POST'); ?>
<?= Html::textarea('KOMENTAR', '', ['rows' => 6])->label(false); ?>
<div class="form-group">
    <?= Html::submitButton('POST', ['class' => 'btn btn-primary']); ?>
</div>
<?= Html::endForm(); ?>

您可以在the documentation 中阅读有关此助手的更多信息。

【讨论】:

  • 不要使用 BaseHtml。使用 yii\helpers\Html 代替。
  • 你错了“HTML有更多的视图设计工具”,你应该阅读这个yiiframework.com/doc-2.0/…
  • 您应该检查您的代码,其中有一些语法错误,例如 beginForm()([ 'method' =&gt; 'post', ]) 和 (['rows' =&gt; 6, name='KOMENTAR'])
  • 这很好,但对 CKEDITOR 4 + yii2 的小部件(github.com/2amigos/yii2-ckeditor-widget)没有帮助,当模型不存在时,只有 js 有帮助:$inputText = Html::textArea('PageData[data]', $data0, ['id'=&gt;'pagedata-data']); echo $inputText; $this-&gt;registerJs('CKEDITOR.replace($("textarea#pagedata-data")[0], {})');
【解决方案2】:

由于您使用的是compact('KOMENTAR'),因此您应该有一个$KOMENTAR 变量。

阅读更多关于 compact 的信息:http://php.net/manual/fr/function.compact.php

或者你应该像这样简单地创建你的模型:

$model = new \yii\base\DynamicModel(['KOMENTAR']);
$model->addRule(['KOMENTAR'], 'string', ['max' => 128]);
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
    // do what you want 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-08
    • 2017-01-25
    相关资源
    最近更新 更多