我正在使用renderParial()函数来渲染视图 - > subscriber-> _form from views-> layouts-> main.php 我得到的问题是我无法使用此插入数据。 Gii生成的CRUD工作正常,但是当我渲染_form并想在数据库中插入数据时,它无法正常工作。 这是我的代码。 main.php
<div class="col-lg-6" style="text-align:right;">
<span>Subscribe Newsletter</span>
<div style="float:right;margin-left:10px;">
<?php
$model=new Subscription();
$this->renderPartial("/subscription/_form",array('model'=>$model));?>
</div>
和_form.php
<?php
/* @var $this SubscriptionController */
/* @var $model Subscription */
/* @var $form CActiveForm */
?>
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'subscription-form',
// Please note: When you enable ajax validation, make sure the corresponding
// controller action is handling ajax validation correctly.
// There is a call to performAjaxValidation() commented in generated controller code.
// See class documentation of CActiveForm for details on this.
'enableAjaxValidation'=>false,
)); ?>
<?php echo $form->errorSummary($model); ?>
<div class="row">
<?php echo $form->textField($model,'email',array('size'=>30,'maxlength'=>30,'placeholder'=>'Email Address')); ?>
<?php echo $form->error($model,'email'); ?>
<?php echo CHtml::submitButton($model->isNewRecord ? 'Subscribe' : 'Save',array('class'=>'btn btn-xs btn-success subscribeBtn')); ?>
</div>
<?php $this->endWidget(); ?>
</div>
答案 0 :(得分:2)
正如adamS和Michiel评论的那样,如果你想在main.php布局文件中放置一个表单或数据,你应该使用一个小部件。
要创建窗口小部件,您需要执行以下操作:
1:在/protected/components/
目录中创建一个php文件,例如SubscriptionWidget.php
2:在组件目录中创建目录views
3:在/protected/components/views/
中创建您的视图.php文件,例如subscriptionWidget.php
4:将以下代码放入SubscriptionWidget.php
文件中:
<?php
class SubscriptionWidget extends CWidget
{
public function init()
{
}
public function run()
{
$model = new SubscriptionForm;
if(isset($_POST['SubscriptionForm']))
{
// proces the data
}
$this->render('subscriptionWidget', array('model'=>$model));
}
}
?>
您的小部件已完成。您现在需要做的就是在main.php
布局文件中调用它,如下所示:
<!doctype html>
<html lang="en">
...
<?php $this->widget('SubscriptionWidget'); ?>
...
</html>
另外,不要忘记将表单放在新创建的视图文件中。
希望这有帮助。
答案 1 :(得分:0)
尝试再添加一个斜杠
$this->renderPartial("//subscription/_form",array('model'=>$model));