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;?>