我正在使用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
有人可以帮我解决这个问题吗?感谢。
答案 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 配置。 我希望它对你有所帮助。 :)