我制作了一个小部件
<?php
class CSend extends CWidget
{
public $model;
public function init()
{
$this->model = new ContactForm();
}
public function run()
{
$this->render('send', array('model' => $this->model));
}
}
查看发送
<div class="modal-backdrope"></div>
<div class="modal">
<?php $form = $this->beginWidget('CActiveForm', array(
'id'=>'contact-form',
'enableClientValidation'=>true,
'clientOptions'=>array(
'validateOnSubmit'=>true,
'validateOnChange' => true,
),
'htmlOptions' => array('class' => 'ask_popup', 'name' => 'email-form'),
)); ?>
<div class="result"></div>
<h1>Povratne informacije</h1>
<div class="modal-close"></div>
<?php echo $form->textField($model, 'name', array('class' => 'w-input inpt', 'placeholder' => 'Vaše ime')); ?>
<?php echo $form->textField($model, 'email', array('class' => 'w-input inpt', 'placeholder' => 'Vaša email adresa')); ?>
<?php echo $form->textArea($model, 'body', array('class' => 'w-input inpt', 'placeholder' => 'Vaša pitanja', 'cols' => 75, 'rows' => 5)); ?>
<div class="w-clearfix captcha">
<?php $this->widget('CCaptcha', array('buttonLabel' => '', 'clickableImage' => true,
'imageOptions' => array('title' => 'Klikni na sliku za promjenu znaka'),))?>
<?php echo $form->textField($model,'verifyCode', array('class' => 'w-input captcha-inpt')); ?>
</div>
<?php echo CHtml::ajaxSubmitButton('Pošaljite',array('site/send'),
array(
'dataType'=>'json',
'type'=>'post',
'success'=>'function(data) {
if(data.status=="success")
{
$("#contact-form")[0].reset();
$(".ask_popup").hide();
$(".modal").prepend("<h3>Vaša poruka je poslana</h3>")
setInterval(function(){
$(".modal").find("h3").remove();
$("#contact-form input[type=text], textarea").css("border-bottom", "solid #CCC 1px");
$(".ask_popup").fadeOut();
$(".modal-backdrope").fadeOut();
}, 2000)
}
else
{
$("#contact-form input[type=text], textarea").css("border-bottom", "solid #CCC 1px");
console.log(data);
$.each(data, function(key, val) {
console.log(key);
$("#contact-form #"+key).css("border-bottom", "solid red 2px");
});
}
}',),
array('class' => 'w-button submit'));?>
<?php $this->endWidget(); ?>
并在布局中调用此小部件
</div>
<?php $this->widget('CSend'); ?>
</body>
</html>
这里,一个错误,firefox:看到一个“表单”开始标记,但是已经有一个活动的“表单”元素。不允许使用嵌套表格。忽略标签。 怎么做错了?对不起我的英语不好。 =更新= 我想到了关于一个小部件的另一个,如果要注释掉一切都好,哪里有错误?
<div class="gray">
<?php $url = $this->getController()->createUrl('site/sc'); ?>
<?php echo CHtml::beginForm($url, 'get'); ?>
Security Code:
<?php echo CHtml::textField('sc', '', array('size' => 40, 'id' => 'sc')); ?>
<?php echo CHtml::submitButton('Get receipt', array('id' => 'send'))?>
<?php CHtml::endForm(); ?>
</div>
答案 0 :(得分:0)
尝试在CSendWidget视图的底部添加此代码:
<?php $form->endWidget(); ?>
您可以CActiveForm
启动小部件beginWidget
,并且必须按endWidget
<强>更新强>
我认为您尝试在其他表单中创建表单是您更新的答案(HTML中不允许)。你需要它在外面创建或以一种形式添加它的字段!
答案 1 :(得分:0)
在html中打开表单标记时会抛出该错误,但是不要正确关闭它并打开另一个表单标记,因此实际上是嵌套表单,这是不允许的。
因此,在使用<?php $this->widget('CSend'); ?>
调用窗口小部件之前,请确保已使用</form>
关闭所有表单标记,如果它是普通的html表单或<?php $this->endWidget(); ?>
如果它是一个CActiveForm。
编辑:必须先完成之前调用您的小部件,因为我怀疑您的页面上的其他表单仍然在之前打开。
此外,请不要忘记关闭表单标记/在CSend小部件中结束您的CActiveForm小部件,如下所示:
查看发送:
<div class="modal-backdrope"></div>
<div class="modal">
<?php $form = $this->beginWidget('CActiveForm', array(
'id'=>'contact-form',
'enableClientValidation'=>true,
'clientOptions'=>array(
'validateOnSubmit'=>true,
'validateOnChange' => true,
),
'htmlOptions' => array('class' => 'ask_popup', 'name' => 'email-form'),
)); ?>
<div class="result"></div>
<h1>Povratne informacije</h1>
<div class="modal-close"></div>
<?php echo $form->textField($model, 'name', array('class' => 'w-input inpt', 'placeholder' => 'Vaše ime')); ?>
....
<?php $form->endWidget(); ?> // close form/CActiveForm widget here
....
希望有所帮助。