如何将yiibooster的textField放在Yii中的/view/layout/main.php中

时间:2014-07-13 07:43:08

标签: php yii yii-extensions yii-booster

我正在使用YiiBooster并尝试在/views/layouts/main.php中的TbActiveForm中创建TextField

对于我添加的控制器:

<?php
    class LayoutsController extends Controller
    {
        public function actionMain()
        {
                    $model=new Item;
                    $this->render('main',array('model'=>$model));
        }
    }
?>

观点:

<?php 
 $this->beginWidget(
     'booster.widgets.TbActiveForm',
           array(
               'id' => 'inlineForm',
               'type' => 'inline',
                'htmlOptions' => array('class' => 'well'),
           )
      );
 echo $form->textFieldGroup($model, 'textField');
 $this->endWidget();
?>

但是我有一个小问题,当试图运行时出现错误信息:

PHP notice
Undefined variable: model

有人可以帮我解决这个问题吗?感谢。

1 个答案:

答案 0 :(得分:2)

点数:1

如果您只使用 $ this-&gt;小部件,则会放置表单的输入元素(例如,textFields,textAreas,dropdownlists,checkBoxes等)表格外面。像

<form method="post" action="#">

</form>
<!-- and then the input elements of form, like -->
<input type="text" name="textField"> <!-- and so on.... -->

点数:2

要在表单中包含元素,必须以

开头
$this->beginWidget
// then the input elements , and finally
$this->endWidget();

所以现在HTML看起来像

<form method="post" action="#">
    <input type="text" name="textField"> <!-- and so on.... -->
</form>

要点:3

您必须将beginWidget分配给变量( $ form )以包含输入元素

以下示例

(i)在控制器功能中

public function actionFunctionName()
{
     $model=new ModelClassName;
     $this->render('viewFileName',array('model'=>$model));
}

(ii)在视图文件中

<?php
$form=$this->beginWidget(
    'booster.widgets.TbActiveForm',
    array(
        'id' => 'inlineForm',
        'type' => 'inline',
        'htmlOptions' => array('class' => 'well'),
    )
);
echo $form->textFieldGroup($model, 'textField');
// before the close tag of php
$this->endWidget();
?>

工作正常。

要点:4

如果它不起作用,请检查 YiiBooster 配置。 我希望它对你有所帮助。 :)