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 № 1Spró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.