model里面重写fields()方法可以过滤load()时的字段,那么fields()是在哪调用的?
fields()主要作用关联数据表字段和模型属性,这样数据表改了只改fields里的字段就可以了,不用重新把控制器视图什么的都改一遍。
另外unset后不是在load时过滤而是直接删除和数据表的关联,在该模型内就好像属性或字段不存在一样。
这个貌似没有你说的那个过滤load功能啊。只是返回模型数据时候有用,比如你表里是username你想返回成nickname
model里面重写fields()方法可以过滤load()时的字段,那么fields()是在哪调用的?
fields()主要作用关联数据表字段和模型属性,这样数据表改了只改fields里的字段就可以了,不用重新把控制器视图什么的都改一遍。
另外unset后不是在load时过滤而是直接删除和数据表的关联,在该模型内就好像属性或字段不存在一样。
这个貌似没有你说的那个过滤load功能啊。只是返回模型数据时候有用,比如你表里是username你想返回成nickname
如题,我自己写了一个自定义函数 按照YII2规范 应该放在YII2中哪里,在模板中想调用 应该怎么调用 。?谢谢
写个 helper 类放在 app\components\ 里,调用跟 yii\helpers\Html 一样的方式
可以看下这个 自定义函数放哪儿
写一个helper,然后里面的方法用静态的
通过这个dropDownList中,选择的一个值,控制 下面 select 显示的列表。
$form->field($model, 'type')->dropDownList($model->get_notice_type(), [
'prompt' => '请选择...',
]);
已有的select:
$form->field($model, 'cgId')->widget(Select2::classname(), [
'hideSearch'=>false,
'data' => $model->get_cg_id(),
'language' => 'zh-CN',
'options' => ['placeholder' => '请选择...'],
'pluginEvents' =>[
"select2:closing" => "function() { $('#notice-cgId').blur(); }",
]
]);
怎么通过选中一个值,控制那个select显示的列表呢?
就是这么一个忧伤的问题。
用change事件,还是啥的,都行,希望有大神能告诉我!!
实在是百度不出来。Google也用了,我也到开发这个插件的老外那留了个言【不是问的这个问题】。人家没鸟我····
假设select2对应的id=select2,且同时假设change事件会去服务端请求新的下拉数据。
那么则有
change请求到新的数据后,可拼接为一组option,然后直接把该组option填充到id=select2
内即可$('#select2').html(change事件获取到的数据拼接的option字符串);
js动态调整咯,你去搜索下三级联动.这类例子应该不少.
比如查询城市表,里面有数据 广东 、广州 、深圳 、湖南 、长沙。。。为了区分省和市,省的f_id = 0,而市的呢 就是对应省的 id, 这时候我用CRUD自动生成的VIEWS, 他查询出的所属省份是直接查询出数字来的,我需要换成对应的省份。不管是更改SQL语句也好,还是直接在查询出的结果里面循环再次查询也好,都可以,我只想知道,怎么或者说,在哪更改 列表页的查询语句,还有查询结果如果我要进行处理的话,结果是在哪里出来的?小白求教,很多问题。。。先问一个。感激不尽!谢谢!
index.php视图中定义展示字段修改一下
模型中添加一个新的方法:
上面的代码可以实现展示效果,如果需要搜索,需要修改search模型。
最好的解决方法,数据表多加一个 f_name 字段, 多加一个冗余字段,程序省去了很多繁琐的处理。
你的描述我没有明白,能结合代码再描述清楚些吗
在 GridView的每行增加操作按钮,自己写了JS,页面打开的时候JS工作正常,
然后在搜索栏输入数据得到搜索结果后,我的JS就不工作了,嘛个原因
代码大概如下:
Pjax::begin();
echo GridView::widget([
.......
]);
Pjax::end();
<?php $this->beginBlock('myjs') ?>
.........
<?php $this->endBlock() ?>
<?php $this->registerJs($this->blocks['myjs'], \yii\web\View::POS_READY); ?>
打开firebug调试啊 你放一段php代码 却让大家找js错误 这思路就不对
刚研究了一会权威手册 看到了覆写数据库表名的方法 想试试,结果试了好久都失败,就是报错,请问数据库表名覆写该修改哪里。求指教。yii\db\ActiveRecord::tableName()
代码在那里。。。。。。。。
composer一直无法连接
请问要怎么办?
直接github.com下载 解压到vendor下行不行?
行的,有些项目,比如国内的,就有提供整个vendor目录下载.
网络不通,两个方案,挂vpn或者换composer源. 国内有人做了镜像,上次使用不知道是配置不对还是别的原因,效果不理想.日本也有一个镜像站.
有时候 下载国外的需要
$model = new Admin();
if ($model->load(\Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['index']);
} else {
}
在$model->save()
之前我要对字段进行加密处理,听说有个beforesave
方法,死活找不到在哪,怎么用? 求教
你可以看下 BaseActiveRecord
类862
– 891
行有示例用法
有的啊。。。
在其对应的model类里面添加一个beforeSave()方法 ,具体怎么实现二楼已经贴出了代码
。。。。。。$model->validate()
//这个是验证数据
验证数据以后 也就是数据通过规则验证了 此时我们在修改对象Model的属性
然后在 $model->save(false) 因为是自己修改的,就不需要再次验证了。直接保存即可,。
Yii2如何返回结果记录数呢?
那可以这样:
然后
然后
如果没有条件,把where去掉
现在遇到一个问题,展示渠道表内的内容时,需要用到一个用户表的字段信息
controller
public function actionIndex()
{
$dataProvider = new ActiveDataProvider([
'query' => Channel::find(),
]);
return $this->render('index', [
'dataProvider' => $dataProvider,
]);
}
views
<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'channel_id',
'channel_name',
'email',<=================== 用户表内的一个字段
'channel_created_at',
[
'class' => 'yii\grid\ActionColumn',
'header' => '操作',
'template' => '{view}{update}',
],
],
]); ?>
Channel模型里,定义一个getUser函数
两个思路:
1.联合查询数据,一次性把要的数据查询过来.
如楼上所示,还可以改进一下.
2.在要用到的地方临时查询数据.