[英]how to create a plain html form in yii2?
我嘗試過
<form id='blah' action='myActionController' method='post'>
//fields here
<input type='submit' name='submit' value='button name' />
</form>
單擊按鈕后,它確實會登陸到www.mydomain.com/site/myActionController
但是頁面內容是
Bad Request (#400)
Unable to verify your data submission.
The above error occurred while the Web server was processing your request.
Please contact us if you think this is a server error. Thank you.
我只是不想使用活動表格...所以如何在不使用內置yii活動表格的情況下以純HTML版本制作表格?
您需要添加CSRF數據才能驗證提交。
最簡單的方法是使用靜態方法\\yii\\web\\Html::beginForm()
可以為您做到這一點(並注意生成適當的表單標簽)。
生成表單的代碼將類似於:
<?= \yii\web\Html::beginForm('myActionController') ?>
<input type='submit' name='submit' value='button name'>
<?= \yii\web\Html::endForm() ?>
您當然可以關閉CSRF驗證,但是不建議這樣做。 沒有此驗證,您的普通表格即可使用。
在yii2中,如果您想要myActionController的鏈接,則應使用此表示法(假設您有一個名為site
的控制器和一個名為myActionController
的動作)
<form id='blah' action='my-action-controller' method='post'>
//這里的字段
可能是您需要正確的網址,為此,UrlHelper可能會很有用
這條路
use yii\helpers\Url;
.....
echo "<form id='blah' action='" . Url::to(['/site/my-action-controller']) .
"' method='post'>";
最好的方法是克隆已經使用sendEmail函數的現有ContactForm模型,並添加自己的屬性,規則和attributeLables。 在sendEmail函數上,您可以在字符串-> setTextBody中包含要接收的所有必需字段作為字符串,並使用串聯,如下所示:
public function sendEmail($email)
{
return Yii::$app->mailer->compose()
->setTo($email)
->setFrom([$this->email => $this->name])
->setSubject($this->subject)
->setTextBody($this->name. ' ' .'has requested'. 'space here'. $this->customfield. ' etc.')
->send();
}
自定義contactForm模型后,您可以在網站控制器上復制actionContact並將其作為actionIndex或其他任何形式添加到您的Form控制器中,還可以復制驗證碼和公共函數action()上的錯誤
現在,我們將在yii2中創建一個普通的html表單,如下所示:
在我的示例中,我使用registerForm作為我的模型( 請注意我如何在yii2的id和name字段上使用該模型來毫無問題地發送表單 )
<?php $form = ActiveForm::begin(); ?>
<div class="col-md-12">
<input type="text" id="registerform-name" placeholder="Institution's Name*" name="RegisterForm[name]" required>
</div>
<div class="col-md-12">
<select id="registerform-institution" name="RegisterForm[institution]">
<option value="" disabled selected hidden>Select Institution's Type*</option>
<option value="Secondary School">Secondary School</option>
<option value="High School">High School</option>
<option value="College">College</option>
<option value="University">University</option>
</select>
</div>
<div class="col-md-12">
<input type="tel" id="registerform-number" placeholder="Institution's Phone Number*" name="RegisterForm[number]" required>
</div>
<div class="col-md-12">
<input type="text" id="registerform-pname" placeholder="Principal's Name*" name="RegisterForm[pname]" required>
</div>
<div class="col-md-12">
<input type="email" id="registerform-email" class="form-control" name="RegisterForm[email]" placeholder="Principal's eMail Address*" name="email" required>
</div>
<div class="col-md-12">
<?= $form->field($model, 'verifyCode')->widget(Captcha::className(), ['captchaAction' => '/register/default/captcha', 'template' => '<div class="row"><div class="col-lg-4">{image}</div><div class="col-lg-8">{input}</div></div>',
]) ?>
</div>
<div class="form-group">
<?= Html::submitButton('Register', ['class' => 'theme-btn theme-btn4']) ?>
</div>
回到我的模型:我具有以下屬性,並且通過適當的驗證等方式,我的表單發送良好:
<?php
namespace register\models;
use Yii;
use yii\base\Model;
class RegisterForm extends Model
{
public $name;
public $institution;
public $number;
public $pname;
public $email;
public $verifyCode;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.