php - 未加载 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">© <?= 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() ?>
解决方案
只需回显表单字段。使用<?=
代替<?
<?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(); ?>
推荐阅读
- swift - LIBDISPATCH 客户端中的调度组崩溃错误:对 dispatch_group_enter() 的嵌套调用过多
- java - Maven用不同版本的依赖构建2个版本的war
- javascript - “CYPRESS_INCLUDE_TAGS=wip npx cypress run”命令的赛普拉斯标签问题
- javascript - 为什么我的 Fish Game 分数在更新时会自动叠加?
- python - 如何订购已经在python中构建的字典
- git - GitHub 存储库显示了我的本地存储库没有的额外文件夹
- reactjs - React Native - 如何制作按钮网格
- sql - 为什么Oracle live sql 多次执行并打印一行?
- python - 如何在 Python 中的一行中将包含换行符 (\n) 的字符串写入文件?
- java - 无法使用 org.apache.derby.client.ClientAutoloadedDriver 建立与 jdbc:derby://localhost=1527/books;create=true 的连接