4

我正在使用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

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

4

1 回答 1

2

点数:1

如果您只使用$this->widget,那么表单的输入元素(例如,textFields、textAreas、下拉列表、复选框等)将被放置在表单之外。喜欢

<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配置。我希望它对你有帮助。:)

于 2014-07-13T07:52:34.860 回答