做yii2时候的各种疑问收集

1.应用主体Yii::$app

应用主体是管理 Yii 应用系统整体结构和生命周期的对象。

应用主体是一个很好用的yii2工具。

$app是一个静态变量,是yii\web\Application;

你可以通过如下表达式访问应用组件:

Yii::$app->componentID

第一次使用以上表达式时候会创建应用组件实例, 后续再访问会返回此实例,无需再次创建。

栗子1:

Yii::$app->request->quaryParams;

打印结果: 

 

栗子2: 

Yii::$app->$app->request->headers;

打印 HTTP请求头的信息。

 

上面的操作会创建一个yii\web\Request类的实例来为用户工作。

Yii 定义了一组固定ID和默认配置的核心组件, 例如 request 组件 用来收集用户请求并解析 路由; 

db 代表一个可以执行数据库操作的数据库连接。 通过这些组件,Yii应用主体能处理用户请求。 

当然你也可以自己添加组件,但是要做好配置(config/main.php),每个组件对应着一个写好的类;

信息: 

请谨慎注册太多应用组件, 应用组件就像全局变量, 使用太多可能加大测试和维护的难度。 一般情况下可以在需要时再创建本地组件。

详情:https://www.yiichina.com/doc/guide/2.0/structure-application-components 

2.如何下载文件?

Yii::$app->response->sendFile($filepath);

可以多了解一下 yii\web\Response的用法,响应;

public function actionDownload($id)
    {
        $model = $this->findModel($id);
        Yii::$app->response->sendFile($model->path,$model->name);
    }

3.如何抛出异常

throw new yii\web\HttpError(404,‘the page in not existed.’) ;  //抛出一个404异常

这个一场赋予状态码灵活多变,第二个参数是提示信息,可自定义。

还有结合起来使用的:try-throw-catch

抛出更多异常,参考yii2手册,待解决yii\web\NotFoundHttpException yii\web\HttpException有什么不同?

3.如何判断save()错误的原因

 public function actionUpdate($id)
    {
        $model = $this->findModel($id);
        $model->name='hello';
        if(!($model->save()))
        {
            var_dump($model->errors); //var_dump($model->getErrors());
            return ;
        }
        return $this->render('update', [
          'model' => $model,
        ]);
    }

打印出来的错误原因: 

4.如何创建一个删除按钮,链接到delete方法并携带参数

<?= Html::a('删除', ['delete', 'id' => $model->id], [
    'class' => 'btn btn-danger',
    'data' => [
        'confirm' => '您确定要删除吗?',
        'method' => 'post',
        'params' => [
            'params_key' => 'params_val'
        ]
    ],
]) ?>

5.if语句+展现html标签

<?php if($model->id==Yii::$app->user->identity->id):?>
<?=Html::a('', ['delete','id'=>$model->id], ['class' => 'glyphicon glyphicon-trash',
                'data'=>[
                'confirm'=>'您确定要删除吗?',
                'method'=>'post',]])?>
<?php endif;?>

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值