2015-12-02 19:40:46 7340次浏览 3条回答 0 悬赏 90 金钱

先上代码:
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里面看的不是很懂,希望知道的人给个解答?

  • 回答于 2015-12-03 13:42 举报

    我猜是因为没有js或者css
    为什么没有,因为你没有加载..
    为什么没有加载。聪明的你应该想到布局里有那么一句php
    没有看源码,以上只是猜...

    ps刚刚看了yii确实没有在它那个小部件中加载资源包'yii\web\YiiAsset''yii\bootstrap\BootstrapAsset',

    3 条回复
    回复于 2015-12-03 13:48 回复

    我现在没有布局 就是好奇他自带的布局怎么又这个效果

    回复于 2015-12-03 13:53 回复

    AppAsset::register($this); 其实还有其他,比如<?php $this->beginPage() ?> <?php $this->head() ?>不过基本可以理解为在一个位置echo;和触发事件 。 yii渲染的过程没有研究过...只是大约猜是这样

    回复于 2015-12-03 14:08 回复

    怎样实现的,继续猜,引入资源不就在合理的位置生成标签... 按这框架的尿性,一定有个部件,装成个类什么的,看看类手册就知道了。。。要工作不玩了

  • 回答于 2015-12-04 10:56 举报

    1楼猜的基本都对

  • 回答于 2016-04-11 16:08 举报

    yii2 就是残废

您需要登录后才可以回答。登录 | 立即注册
xyf90314
副总裁

xyf90314

注册时间:2015-03-04
最后登录:2023-03-13
在线时长:95小时23分
  • 粉丝21
  • 金钱5257
  • 威望40
  • 积分6607

热门问题