发货表DevicesInfo 字段ClientID
客户表ClientInfo 字段CID,CName,CAddress
字段ClientID跟字段CID关联
发货编辑页面里有客户名的下拉列表框,选择改变客户的时候,其他文本框显示对应客户的信息
求示例,求思路,求帮助链接,谢谢
我这里是这样处理的,你可以参考一下。
views:
Controllers:
这个联动是可以的,YII自带的JS
里有相应操作的方法,但是我不知道。。。
发货表DevicesInfo 字段ClientID
客户表ClientInfo 字段CID,CName,CAddress
字段ClientID跟字段CID关联
发货编辑页面里有客户名的下拉列表框,选择改变客户的时候,其他文本框显示对应客户的信息
求示例,求思路,求帮助链接,谢谢
我这里是这样处理的,你可以参考一下。
views:
Controllers:
这个联动是可以的,YII自带的JS
里有相应操作的方法,但是我不知道。。。
这个网站的后台管理功能有:
自建页面
页面可以设置布局
页面里可以添加一些组件,组件可拖动,点击编辑可配置组件的一些内容(比如滑动图)
问题:
这个,类似建站系统么?
这个网站后台的源码能给吗
找了半看没看到,请指教,我想用来裁剪上传的图片。
@yexz1314 后台处理就是用的这个扩展,图片裁切是用的js插件。
官方有个image的扩展 https://github.com/yiisoft/yii2-imagine
图像处理扩展,Imagine,是extension,能够完成基本的图片操作。
扩展默认是没有安装的,你需要用composer安装再引入就可以了。
我的数据库 有个字段 id 自增主键
我在$model->load
或者 $model->attributes
数据赋值时候
前端给我提交给model不必要的字段id这种情况如何处理
难道是我赋值之后要判断一下吗 然后赋值null?
我写的是接口 我不相信客户端 万一post过来id 我load 或者$model->attributes 不就赋值上去了
既然你的id自增主键,那么前端就不应该传递,也就是说写ActiveForm的时候不设置id这条input即可;
如果是其他原因担心id传递过来,可以用函数scenarios()解决;
比如你的model里面有三个字段:id、name、email,可以在这样写:
这样再在Controller里面添加一个:model->scenario=’normal’;
即可使得id不会被赋值。
最近在做app的接口, 但是做好的接口只想给app用,不想让别人看到也能用!有什么方法可以让别人就算看到这个接口也不能获取到我们数据库的数据。
用RESTFul接口。
签名防伪:
app端应该如果要求账号密码登录的话,app访问接口的url用username,password,时间戳等参与制作“签名”。
json或者xml数据,也可以添加“签名项”,接收方用同样的算法计算出签名,与“签名项”对照验证,传输环节有人改动数据将导致签名项验证失败,这样就有效杜绝了MITM攻击。
加密防偷窥,你懂的~~~:
你不怕被人看的话数据做些加密。用https的话,就不用加密了。
请教rules的配置是什么时候执行的
是$model->load()
还是$model->save()
如果load时候没有load到值可不可以设置一个默认值
如果load时候的变量值为1 想要赋值给model为2 可不可以通过rule进行设置
楼主可打开页面的 HTML 看看页面底部下面的脚本验证,你就能明白 rules 的验证规则是在何时进行的验证
至于重新赋值或者其他动作验证楼主可参见 http://www.yiichina.com/doc/guide/2.0/input-validation#standalone-validators
默认情况下,是所有场景都走的,你可以设置不同的场景,这个是注释上说的。
之前看错题目了木好意思。。。
情境要求:
要在订单(Order)视图的gridview中显示出客户(Customer)状态,并使其具有与其它字段相同的排序和搜索功能。
数据库结构
订单表order含有字段customer_id 与 客户表customer的id字段关联
首先确保在Order Model中包含以下代码:
public function getCustomer()
{
return $this->hasOne(Customer::className(), ['id' => 'customer_id']);
}
用gii会自动生成此代码;
第一步:
在OrderSearch添加一个$customer_name变量
class OrderSearch extends Order
{
public $customer_state; //<=====就是加在这里
}
第二步:
修改OrderSearch中的search函数
public function search($params)
{
$query = Order::find();
$query->joinWith(['customer']);<=====加入这句
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$dataProvider->setSort([
'attributes' => [
/* 其它字段不要动 */
/* 下面这段是加入的 */
/*=============*/
'customer_state' => [
'asc' => ['customer.customer_state' => SORT_ASC],
'desc' => ['customer.customer_state' => SORT_DESC],
'label' => 'Customer State'
],
/*=============*/
]
]);
if (!($this->load($params) && $this->validate())) {
return $dataProvider;
}
$query->andFilterWhere([
'id' => $this->id,
'user_id' => $this->user_id,
'customer_id' => $this->customer_id,
'order_time' => $this->order_time,
'pay_time' => $this->pay_time,
]);
$query->andFilterWhere(['like', 'status', $this->status]);
$query->andFilterWhere(['like', 'customer.customer_state', $this->customer_state]) ;//<=====加入这句
return $dataProvider;
}
第三步:
修改order/index视图的gridview
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'id',
'customer_id',
'status',
['label'=>'客户', 'attribute' => 'customer_state', 'value' => 'customer.customer_state' ],//<=====加入这句
['class' => 'yii\grid\ActionColumn'],
],
]); ?>
['label'=>'客户', 'attribute' => 'customer_state', 'value' => 'customer.customer_state' ]
目前显示出来的是0、1、9,怎么去对应的去显示。。
0:显示‘未发货’
1:显示‘已发货’
9:显示‘退货,已处理’
以下代码应该可以满足你的要求,局部地方根据自己需要修改.
具体参考:http://www.yiiframework.com/doc-2.0/yii-grid-datacolumn.html#$value-detail
这篇文章希望对你有所启发
http://www.yiichina.com/tutorial/337
为什么我的GII 不会生成那段代码,就是hasOne() 是我自己写进去的···
我想在 filterModel 搜索框中 用时间插件 去搜索可以么, 该怎么写…/(ㄒoㄒ)/~~
作为一只菜鸟,我想从2.0开始学习,而且打算在Linux下搭建环境,但是搜了很多资料,感觉都很难配置 – 。-
在Windows下面开发,用Linux做服务器,使用一款你喜欢的IDE(Zend Studio、eclipse、PHPStorm等等)
那就先从MAC上练起吧。其实在Windows上和Linux上差别不是太大吧?
个人感觉是,不去折腾下,不会知道这是一件多么有趣的事情。所以加油,亲,鼓励你去尝试。有问题,网站内的各位大大均可秒杀。楼上的舰长绝对大牛一枚。
既然是菜鸟学习用windows就好了,最好不要把时间花费在配置环境上,等技术牛了再练练环境配置
linux其实也就那点事吧,lnmp一键安装包,接下来的就是vim跟Linux常用命令了
对新手来说,无论是W还是L,或者MAC,都有个工具,XAMMP,也就是传说中的狗骨头~
对新手来说,Win平台下另一个神器叫USBWebserver,是我用过的继承环境里,最顺手的一个,没有之一。
使用 PHPstudy 的路过, 一键安装, 修改本地配置也简单
为什么用compareAttribute验证两个密码是否一致时,我两个密码输入是个数不同的0时,验证通过了?
array(‘pwd2’, ‘compare’, ‘compareAttribute’ => ‘password’, ‘message’ => ‘两次密码必须一致’),
compare的实现:
等于用==
而非strcmp时,’00’ == ‘000’ 返回真。参考示例代码:
输出:’00 == 0′
这个问题说明compare的type=string的时候,运算符有待商榷,给官方提一个issue。
大家好,我使用yii2高级模板制作上传的时候遇到些问题,
请问大家在backend应用中上传文件都是怎么存储的。我实际情况这样。
后台上传时,我希望将图片保存到前台的目录下 “frontend\web\upload\xxxx….”
但是后台上传些保存路径的时候 无法获取到前台的存储路劲。
我尝试了。@web,@webroot,等等 都只能获取到 backend…… 请问大家都是怎么处理的?
难道访客前端浏览网页的时候 也是在调用后台的某个url?
呃…. 不好意思我没有描述清楚。
假设我站点根目录在 D:\web\ 下。有yii2框架 并且有目录 backend,frontend
对应域名 admin.yii.com , www.yii.com
在后台上传的时候 别名类的配置都是指向backend\目录下的某个路径。比如某图片上传后实际路径d:\web\backend\web\upload\image.jpg
然后 这些图片 在前台进行浏览的时候 frontend \目录下并没有这些内容。这个时候我如果想显示他 那就需要 http://admin.yii.com/upload\image.jpg
所以我现在想要 后台上传的路劲能否设置为前台的 frontend\web\upload.
如果你想把图片上传的路劲设置为前台的 frontend\web\upload,方法有很多。
最简单的一种:
../的意思是上一级目录,是相对于index.php的路径说的。
如果设置常量的话,@app应该是相对于当期模块的根路径,那就不用它。
在config目录下新建一个constant.php,写入这样一句话:
然后在index.php调用:
然后在图片保存的时候写:
就可以了,而且APP_BASE_PATH这个常量在其他地方也可以使用。总之方法很多,../这个符号可以让你访问到各个目录。
@app/image
即然前后台分离,自然不能使用@web这样的相对路径供客户端进行跨服务访问。访问的路径就应当是指向所属域名的。