/ / Yii, formularz widgetu renderowania błędów w forn - yii

Yii, formularz widgetu renderowania błędów w forn - yii

Zrobiłem widget

<?php
class CSend extends CWidget
{
public $model;
public function init()
{
$this->model = new ContactForm();
}
public function run()
{
$this->render("send", array("model" => $this->model));
}
}

zobacz wyślij

<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(); ?>

i wywołaj ten widget w układzie

    </div>
<?php $this->widget("CSend"); ?>
</body>
</html>

Tutaj błąd, firefox: Widziałem tag startowy "form", ale był już aktywny element "formularza". Zagnieżdżone formularze są niedozwolone. Ignorowanie tagu. Jak to zrobić było złe? Przepraszam za mój angielski. = update = Pomyślałem o innym na temat widżetu, czy to komentować, czy wszystko jest OK, gdzie zawiera błąd?

<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>

Odpowiedzi:

0 dla odpowiedzi № 1

Spróbuj dodać na dole widoku CSendWidget ten kod:

<?php $form->endWidget(); ?>

Rozpoczynasz widżet CActiveForm przez beginWidget i musisz zakończyć renderowanie tego widgetu przez endWidget

Zaktualizowano:

Myślę, że próbujesz stworzyć formularz w innej formie, która jest twoją zaktualizowaną odpowiedzią (nie jest to dozwolone w HTML), potrzebujesz go utworzyć na zewnątrz lub dodać pola w jednym formularzu!


0 dla odpowiedzi nr 2

Ten błąd jest generowany podczas otwierania tagu formularza w html, ale nie zamykaj go poprawnie i otwórz inny tag formularza, a tym samym zagnieżdżanie formularzy, co jest niedozwolone.

Zanim wezwiesz widżet za pomocą <?php $this->widget("CSend"); ?> upewnij się, że jesteś zamknięty wszystko tworzyć znaczniki z jednym z nich </form> jeśli jest to normalna forma html lub <?php $this->endWidget(); ?> jeśli jest to CActiveForm.

EDYCJA: To musi być zrobione PRZED nazywasz swój widget, ponieważ podejrzewam, że inny formularz jest nadal otwarty wcześniej na twojej stronie.

Ponadto, nie zapomnij zamknąć znacznika formularza / zakończ widżetu CActiveForm w swoim widżecie CSend, tak:

Wyświetl wyślij:

<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
....

Nadzieja, która pomaga.