yii2基础版自带的布局main.php做了什么处理 [ 2.0 版本 ]
先上代码:
view层:
<?php
use yii\widgets\ActiveForm;
use yii\helpers\Html;
?>
<?php $form = ActiveForm::begin();?>
<?= $form -> field($model,'name')->input('text')->label('用户名');?>
<?= $form -> field($model,'email')->label('邮箱');?>
<?= Html::submitButton('提交');?>
<?php ActiveForm::end();?>
控制器:
<?php
namespace app\controllers;
use app\models\TestForm;
use yii\web\Controller;
use Yii;
class TestController extends Controller
{
public function actionIndex()
{
$model = new TestForm();
if($model->load(Yii::$app->request->post()) && $model->validate()){
echo 'SUCCESS';exit;
}
return $this -> render('index',['model'=>$model]);
}
}
模型层:
<?php
namespace app\models;
use yii\base\Model;
class TestForm extends Model
{
public $name;
public $email;
public function rules()
{
return [
[['name','email'],'required','message'=>'必填项'],
['email','email','message'=>'格式不正确'],
];
}
}
运行的效果是:当一个输入框失去焦点就进行验证了
如果在控制器里加上public $layout = false;
也就是不使用自带的布局,就没有这样的效果,main.php里面看的不是很懂,希望知道的人给个解答?
共 3 个回答
-
MilkProtiem 回答于 2015-12-03 13:42 举报
我猜是因为没有js或者css
为什么没有,因为你没有加载..
为什么没有加载。聪明的你应该想到布局里有那么一句php
没有看源码,以上只是猜...ps刚刚看了yii确实没有在它那个小部件中加载资源包'yii\web\YiiAsset''yii\bootstrap\BootstrapAsset',
共 3 条回复MilkProtiem 回复于 2015-12-03 13:53 回复@xyf90314 AppAsset::register($this); 其实还有其他,比如<?php $this->beginPage() ?> <?php $this->head() ?>不过基本可以理解为在一个位置echo;和触发事件 。 yii渲染的过程没有研究过...只是大约猜是这样
MilkProtiem 回复于 2015-12-03 14:08 回复@xyf90314 怎样实现的,继续猜,引入资源不就在合理的位置生成标签... 按这框架的尿性,一定有个部件,装成个类什么的,看看类手册就知道了。。。要工作不玩了
xyf90314
注册时间:2015-03-04
最后登录:2023-03-13
在线时长:95小时23分
最后登录:2023-03-13
在线时长:95小时23分
- 粉丝21
- 金钱5257
- 威望40
- 积分6607