簡體   English   中英

如何在yii2中創建純HTML表單?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM