首页 > 解决方案 > 未加载 ActiveForm

问题描述

我正在尝试学习使用 yii2,在后端制作了一个控制器、一个模型和一个视图,我使用了 ActiveForm,但它最终向我展示了我在视图中编写的内容,而不是加载表单含义而不是制作表单显示的是: field($model,'UserName'); ?> field($model,'密码'); ?> 'btn btn-primary']); ?> 这些是我的代码

控制器:

<?php
namespace backend\controllers;
use yii\web\Controller;
use Yii;

class UserController extends Controller 
{
    
public function actionIndex()
{
    return $this->render('index');
}
public function actionNew()
{
    $model = new UserForm;
    if($model->load(Yii::$app->request->post()) && $model->validate())
    {
        return $this->render('_show',['model'=>$model]);
    }
    else
    {
    return $this->render('_form',['model'=>$model]);
    }
}
}
?>

看法:

<?php
use yii\widgets\ActiveForm;
use yii\helpers\Html;
?>

<?php $form=ActiveForm::begin(); ?>

<? $form->field($model,'UserName'); ?>
<? $form->field($model,'Password'); ?>

<? Html::submitButton('login', ['class'=> 'btn btn-primary']); ?>
<?php ActiveForm::end(); ?>

模型:

<?php

namespace backend\models;
use Yii;
use yii\base\Model;
class UserForm extends Model
{
    public $UserName;
    public $Password;
   

    public function rules()
    {
        return 
        [
        [['UserName','Password'],'required'],
        ['Password','Password']
        ];
    }
}
?>

主文件

<?php

/* @var $this \yii\web\View */
/* @var $content string */

use backend\assets\AppAsset;
use yii\helpers\Html;
use yii\bootstrap\Nav;
use yii\bootstrap\NavBar;
use yii\widgets\Breadcrumbs;
use common\widgets\Alert;

AppAsset::register($this);
?>
<?php $this->beginPage() ?>
<!DOCTYPE html>
<html lang="<?= Yii::$app->language ?>">
<head>
    <meta charset="<?= Yii::$app->charset ?>">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <?php $this->registerCsrfMetaTags() ?>
    <title><?= Html::encode($this->title) ?></title>
    <?php $this->head() ?>
</head>
<body>
<?php $this->beginBody() ?>

<div class="wrap">
    <?php
    NavBar::begin([
        'brandLabel' => Yii::$app->name,
        'brandUrl' => Yii::$app->homeUrl,
        'options' => [
            'class' => 'navbar-inverse navbar-fixed-top',
        ],
    ]);
    $menuItems = [
        ['label' => 'Home', 'url' => ['/site/index']],
    ];
    if (Yii::$app->user->isGuest) {
        $menuItems[] = ['label' => 'Login', 'url' => ['/site/login']];
    } else {
        $menuItems[] = '<li>'
            . Html::beginForm(['/site/logout'], 'post')
            . Html::submitButton(
                'Logout (' . Yii::$app->user->identity->username . ')',
                ['class' => 'btn btn-link logout']
            )
            . Html::endForm()
            . '</li>';
    }
    echo Nav::widget([
        'options' => ['class' => 'navbar-nav navbar-right'],
        'items' => $menuItems,
    ]);
    NavBar::end();
    ?>

    <div class="container">
        <?= Breadcrumbs::widget([
            'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [],
        ]) ?>
        <?= Alert::widget() ?>
        <?= $content ?>
    </div>
</div>

<footer class="footer">
    <div class="container">
        <p class="pull-left">&copy; <?= Html::encode(Yii::$app->name) ?> <?= date('Y') ?></p>

        <p class="pull-right"><?= Yii::powered() ?></p>
    </div>
</footer>

<?php $this->endBody() ?>
</body>
</html>
<?php $this->endPage() ?>

标签: phpvisual-studio-codeyii2yii2-advanced-app

解决方案


只需回显表单字段。使用<?=代替<?

<?php
use yii\widgets\ActiveForm;
use yii\helpers\Html;
?>

<?php $form=ActiveForm::begin(); ?>

<?= $form->field($model,'UserName'); ?>
<?= $form->field($model,'Password'); ?>

<?= Html::submitButton('login', ['class'=> 'btn btn-primary']); ?>
<?php ActiveForm::end(); ?>

推荐阅读