drodata
yii\base\Widget 支持自动生成 id, 其静态属性 $counter 和 $autoIdPrefix 就是用来生成自动 id 的看这里。
要想让自动 id 起作用,关键是在 widget 初始化时,调用 $this->getId() 让计数器 $counter 自增,从而生成唯一的 id. 你列举的这几个 Yii 内置的 widgets 都是这么做的:
- Nav, NavBar: https://github.com/yiisoft/yii2-bootstrap/blob/master/src/BootstrapWidgetTrait.php#L61
- GridView: https://github.com/yiisoft/yii2/blob/master/framework/widgets/BaseListView.php#L124
BaseListView 是 GridView 的父类。 - ActiveForm: https://github.com/yiisoft/yii2/blob/master/framework/widgets/ActiveForm.php#L206
你的 widget id 不能自增的原因可能是你的 widget 的 init() 内没有显性执行
$options['id'] = $this->getId();
所致。你的 columns 配置有点奇怪,$data 不知从何而来。
- drodata 赞了回答
在你的
common/config/bootstrap.php
加入这一句试试Yii::setAlias('@components',dirname(dirname(__DIR__)) . '/components');
以下测试:
Yii::setAlias('@test',dirname(dirname(__DIR__)) . '/test');//这是我测试的数据。
test/test.php
文件<?php /** * Created by PhpStorm. * User: Sesame * Date: 2019/1/10 * Time: 10:59 */ namespace test ; class test { public function testAction() { return "测试数据"; } }
在其他控制器调用(在控制器中 use test\test;):
$str = (new test())->testAction(); var_dump($str); die;
打印结果
string(12) "测试数据"
不是很会这个排版。看着有点不舒服,你稍微看仔细点 #笑哭。 error 值为非 0 表示文件上传失败,6 代表的含义见
http://php.net/manual/zh/features.file-upload.errors.php所以有可能是服务器配置的原因。
@沃斯尼达耶 找相同的图片分别在 backend 和 frontend 上传,看看是不是还是一个成功一个失败。目的是排除一下图片尺寸过大的可能(upload_max_filesize directive)。
- drodata 回答了问题 上传图片报错 没有临时文件
error 值为非 0 表示文件上传失败,6 代表的含义见
http://php.net/manual/zh/features.file-upload.errors.php所以有可能是服务器配置的原因。
rules() 和 attributeLabels() 返回的都是数组,在子类内调用
parent::rules()
或parent::attributeLabels()
可获取,之后自行组装即可,下面是自定义 attributeLabels() 的例子:// adForm.php use yii\helpers\ArrayHelper; public function attributeLabels() { // parent::attributeLabels() 内含有 Operation 内的属性标签 return ArrayHelper::merge(parent::attributeLabels(), [ // 这里放置 adForm 内的属性标签 'status' => '状态', ]); }
不可以。
角色和权限本质是 yii\rbac\Item, Rule 跟 Item 没有关系,Rule 只能依附在 Item 上存在,且一个 Item 只能有一个 Rule.
@jorge Rule 所需的额外参数需要在 can() 的第二个参数内传递,参数的个数也随意。你采用传 category_id, team_id 的做法也可以,但是可读性不是太好,推荐像官方那样直接传入 AR 模型实例的做法,即传入的是具体的版块或小组实例而不是 id. 你看 https://www.yiiframework.com/doc/guide/2.0/en/security-authorization#using-rules 里面的
AuthorRule
需要的参数是 $post 而非 post_id不可以。
角色和权限本质是 yii\rbac\Item, Rule 跟 Item 没有关系,Rule 只能依附在 Item 上存在,且一个 Item 只能有一个 Rule.