2015-09-03 71 views
2

我想創建ActiveForm沒有模型以防萬一。我做了dynamicModel嘗試,但我得到了一些錯誤:ActiveForm without model yii2

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 
+0

在模型中 – vishuB

回答

7

由於您使用compact('KOMENTAR'),你應該有一個$KOMENTAR變量。

瞭解更多關於compacthttp://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 
} 
6

通常活動項目是形式曾經與模型一起工作,但Yii2有一個名爲BaseHtml的類來使用像傳統HTML一樣的項目。使用beginForm()方法從BaseHtml。並嘗試這樣的事情。

use yii\helpers\BaseHtml; 

<?php $form = Html::beginForm(['/controller/view', 'id' => $model->id], 'POST'); ?> 

<?= BaseHtml::textarea->textarea(['rows' => 6, name='KOMENTAR'])->label(false) ?> 

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

<?php BaseHtml::endForm() ?> 

編輯:BaseHtml可以使用Htmlhere的文檔。

use yii\helpers\Html; 

<?php $form = Html::beginForm()([ 
    'method' => 'post', 
]); ?> 
<?= Html::textarea->textarea(['rows' => 6, name='KOMENTAR'])->label(false) ?> 
<div class="form-group"> 
    <?= Html::submitButton('POST', ['class' => 'btn btn-primary']) ?> 
</div> 
<?php Html::endForm() ?> 
+3

頁界定公共$ KOMENTAR不要使用BaseHtml。改用yii \ helpers \ Html。 – Tony

+0

哈哈我忘記了'Html'類,我會編輯我的回覆,謝謝。 – Sageth

+1

你錯了「Html有更多的視圖設計工具」,你應該閱讀http://www.yiiframework.com/doc-2.0/guide-helper-overview.html#customizing-helper-classes – soju