我想通过Html::a访问这个URL,一直获取不到URL的参数值,请问我的UrlManager中的rules该怎样修改?
你理解错了a的用法:你这个参数不是URL的参数,是a的参数哦;你改为:Html::a('点击about',['about','params'=>'about1','id'=>'about2']);
Html::a('点击about',['about','params'=>'about1','id'=>'about2']);
我想通过Html::a访问这个URL,一直获取不到URL的参数值,请问我的UrlManager中的rules该怎样修改?
你理解错了a的用法:你这个参数不是URL的参数,是a的参数哦;你改为:Html::a('点击about',['about','params'=>'about1','id'=>'about2']);
Html::a('点击about',['about','params'=>'about1','id'=>'about2']);
sublime 缩进线
在哪里设置可以显示出来。
打开 Preferences -> Settings-Default
在里面搜索indent_guide该关键字,会找到两个结果
此时你如果设置成和我上面截图一样的的话,就会呈现下面的结果
你会看到两个红框中的白线一个“深”,一个“浅”,“深”是由于我的鼠标放在了那个函数上,这个效果是由
“indent_guide_options”: [“draw_normal”,”draw_active”],中的”draw_active”发挥的作用,如果你改为
“indent_guide_options”: [“draw_normal”],那么呈现出来的都是“浅”的。
好了,若果有其他不太懂的再交流吧!
是有的但不明顯, 想要明顯的話
第一 : Indent Guide Color
第二 : Hide tab lines
你要的是这种效果吗?
有没有人遇到过 ubuntu 环境线的sb 缩进线出问题的情况。
目前是这样的
这个线没有跟我设置的缩进tab(4个空格)匹配,导致代码折叠出问题了
在加载kartik\detail\DetailView
时,开启ckeditor后,出现下面异常:
Invalid Parameter – yii\base\InvalidParamException
Trying to copy a directory to itself or a subdirectory.
看了下,问题可能出在下面的第2条:
BaseFileHelper::copyDirectory('/Users/qijiaona/var/www/intel/backend/web/assets', '/Users/qijiaona/var/www/intel/backend/web/assets/da31e3d5');
关闭ckeditor插件后就可以正常运行了。
求解决。
1. in /Users/qijiaona/var/www/intel/vendor/yiisoft/yii2/helpers/BaseFileHelper.php at line 260
2. in /Users/qijiaona/var/www/intel/vendor/yiisoft/yii2/web/AssetManager.php at line 542 – yii\helpers\BaseFileHelper::copyDirectory('/Users/qijiaona/var/www/intel/ba...', '/Users/qijiaona/var/www/intel/ba...', ['dirMode' => 509, 'fileMode' => null, 'beforeCopy' => Closure])
3. in /Users/qijiaona/var/www/intel/vendor/yiisoft/yii2/web/AssetManager.php at line 458 – yii\web\AssetManager::publishDirectory('/Users/qijiaona/var/www/intel/ba...', [])
4. in /Users/qijiaona/var/www/intel/vendor/yiisoft/yii2/web/AssetBundle.php at line 183 – yii\web\AssetManager::publish('assets', [])
5. in /Users/qijiaona/var/www/intel/vendor/yiisoft/yii2/web/AssetManager.php at line 266 – yii\web\AssetBundle::publish(yii\web\AssetManager)
6. in /Users/qijiaona/var/www/intel/vendor/yiisoft/yii2/web/AssetManager.php at line 237 – yii\web\AssetManager::loadBundle('dosamigos\ckeditor\CKEditorWidge...', [], true)
7. in /Users/qijiaona/var/www/intel/vendor/yiisoft/yii2/web/View.php at line 284 – yii\web\AssetManager::getBundle('dosamigos\ckeditor\CKEditorWidge...')
8. in /Users/qijiaona/var/www/intel/vendor/yiisoft/yii2/web/AssetBundle.php at line 123 – yii\web\View::registerAssetBundle('dosamigos\ckeditor\CKEditorWidge...')
9. in /Users/qijiaona/var/www/intel/vendor/2amigos/yii2-ckeditor-widget/src/CKEditor.php at line 57 – yii\web\AssetBundle::register(yii\web\View)
10. in /Users/qijiaona/var/www/intel/vendor/2amigos/yii2-ckeditor-widget/src/CKEditor.php at line 44 – dosamigos\ckeditor\CKEditor::registerPlugin()
11. in /Users/qijiaona/var/www/intel/vendor/yiisoft/yii2/base/Widget.php at line 102 – dosamigos\ckeditor\CKEditor::run()
12. in /Users/qijiaona/var/www/intel/vendor/yiisoft/yii2/widgets/ActiveField.php at line 703 – yii\base\Widget::widget(['preset' => 'full', 'clientOptions' => ['allowedContent' => true, 'extraPlugins' => 'lineheight,uploadimage', 'line_height' => '1;1.2;1.5;2;2.5;3', 'imageUploadUrl' => '/accelerator/upload'], 'model' => common\models\Accelerator, 'attribute' => 'acc_desc_long', ...])
13. in /Users/qijiaona/var/www/intel/vendor/kartik-v/yii2-detail-view/DetailView.php at line 873 – yii\widgets\ActiveField::widget('\dosamigos\ckeditor\CKEditor', ['preset' => 'full', 'clientOptions' => ['allowedContent' => true, 'extraPlugins' => 'lineheight,uploadimage', 'line_height' => '1;1.2;1.5;2;2.5;3', 'imageUploadUrl' => '/accelerator/upload']])
14. in /Users/qijiaona/var/www/intel/vendor/kartik-v/yii2-detail-view/DetailView.php at line 785 – kartik\detail\DetailView::renderFormAttribute(['attribute' => 'acc_desc_long', 'format' => 'raw', 'type' => 'widget', 'widgetOptions' => ['class' => '\dosamigos\ckeditor\CKEditor', 'preset' => 'full', 'clientOptions' => ['allowedContent' => true, 'extraPlugins' => 'lineheight,uploadimage', 'line_height' => '1;1.2;1.5;2;2.5;3', 'imageUploadUrl' => '/accelerator/upload']], ...])
15. in /Users/qijiaona/var/www/intel/vendor/kartik-v/yii2-detail-view/DetailView.php at line 745 – kartik\detail\DetailView::renderAttributeItem(['attribute' => 'acc_desc_long', 'format' => 'raw', 'type' => 'widget', 'widgetOptions' => ['class' => '\dosamigos\ckeditor\CKEditor', 'preset' => 'full', 'clientOptions' => ['allowedContent' => true, 'extraPlugins' => 'lineheight,uploadimage', 'line_height' => '1;1.2;1.5;2;2.5;3', 'imageUploadUrl' => '/accelerator/upload']], ...])
16. in /Users/qijiaona/var/www/intel/vendor/kartik-v/yii2-detail-view/DetailView.php at line 718 – kartik\detail\DetailView::renderAttributeRow(['attribute' => 'acc_desc_long', 'format' => 'raw', 'type' => 'widget', 'widgetOptions' => ['class' => '\dosamigos\ckeditor\CKEditor', 'preset' => 'full', 'clientOptions' => ['allowedContent' => true, 'extraPlugins' => 'lineheight,uploadimage', 'line_height' => '1;1.2;1.5;2;2.5;3', 'imageUploadUrl' => '/accelerator/upload']], ...])
17. in /Users/qijiaona/var/www/intel/vendor/kartik-v/yii2-detail-view/DetailView.php at line 611 – kartik\detail\DetailView::renderDetailView()
18. in /Users/qijiaona/var/www/intel/vendor/kartik-v/yii2-detail-view/DetailView.php at line 548 – kartik\detail\DetailView::runWidget()
19. in /Users/qijiaona/var/www/intel/vendor/yiisoft/yii2/base/Widget.php at line 102 – kartik\detail\DetailView::run()
20. in /Users/qijiaona/var/www/intel/backend/views/accelerator/view.php at line 176 – yii\base\Widget::widget(['model' => common\models\Accelerator, 'mode' => 'view', 'formOptions' => ['options' => ['enctype' => 'multipart/form-data']], 'panel' => ['heading' => '众创空间详情', 'type' => 'primary'], ...])
21. in /Users/qijiaona/var/www/intel/vendor/yiisoft/yii2/base/View.php at line 326 – require('/Users/qijiaona/var/www/intel/ba...')
22. in /Users/qijiaona/var/www/intel/vendor/yiisoft/yii2/base/View.php at line 248 – yii\base\View::renderPhpFile('/Users/qijiaona/var/www/intel/ba...', ['model' => common\models\Accelerator, 'dataProvider' => yii\data\ActiveDataProvider, 'dpMentor' => yii\data\ActiveDataProvider, 'dpInvestor' => yii\data\ActiveDataProvider, ...])
23. in /Users/qijiaona/var/www/intel/vendor/yiisoft/yii2/base/View.php at line 150 – yii\base\View::renderFile('/Users/qijiaona/var/www/intel/ba...', ['model' => common\models\Accelerator, 'dataProvider' => yii\data\ActiveDataProvider, 'dpMentor' => yii\data\ActiveDataProvider, 'dpInvestor' => yii\data\ActiveDataProvider, ...], backend\controllers\AcceleratorController)
24. in /Users/qijiaona/var/www/intel/vendor/yiisoft/yii2/base/Controller.php at line 378 – yii\base\View::render('view', ['model' => common\models\Accelerator, 'dataProvider' => yii\data\ActiveDataProvider, 'dpMentor' => yii\data\ActiveDataProvider, 'dpInvestor' => yii\data\ActiveDataProvider, ...], backend\controllers\AcceleratorController)
25. in /Users/qijiaona/var/www/intel/backend/controllers/AcceleratorController.php at line 189 – yii\base\Controller::render('view', ['model' => common\models\Accelerator, 'dataProvider' => yii\data\ActiveDataProvider, 'dpMentor' => yii\data\ActiveDataProvider, 'dpInvestor' => yii\data\ActiveDataProvider, ...])
26. backend\controllers\AcceleratorController::actionView('58')
27. in /Users/qijiaona/var/www/intel/vendor/yiisoft/yii2/base/InlineAction.php at line 55 – call_user_func_array([backend\controllers\AcceleratorController, 'actionView'], ['58'])
28. in /Users/qijiaona/var/www/intel/vendor/yiisoft/yii2/base/Controller.php at line 154 – yii\base\InlineAction::runWithParams(['r' => 'accelerator/view', 'id' => '58'])
29. in /Users/qijiaona/var/www/intel/vendor/yiisoft/yii2/base/Module.php at line 454 – yii\base\Controller::runAction('view', ['r' => 'accelerator/view', 'id' => '58'])
30. in /Users/qijiaona/var/www/intel/vendor/yiisoft/yii2/web/Application.php at line 100 – yii\base\Module::runAction('accelerator/view', ['r' => 'accelerator/view', 'id' => '58'])
31. in /Users/qijiaona/var/www/intel/vendor/yiisoft/yii2/base/Application.php at line 375 – yii\web\Application::handleRequest(yii\web\Request)
32. in /Users/qijiaona/var/www/intel/backend/web/index.php at line 18 – yii\base\Application::run()
ps: 我看到之前有人也遇到过类似的问题,比如sgmengfault上的这个yii2 Trying to copy a directory to itself or a subdirectory,还有yiichina上的这个创建表单报错 ,但这两个帖子都与我遇到的情况不同,求解决。
我的AppAsset类配置
public $basePath = '@webroot';
public $baseUrl = '@web';
public $css = [
'css/site.css',
];
public $js = [
];
public $depends = [
'yii\web\YiiAsset',
'yii\bootstrap\BootstrapAsset',
];
应该改成这样:
修改yii2-ckeditor-widget文件夹下面的CKEditorWidgetAsset.php文件
修改
为
数据是一个大量的数组,我需要拼接 SQL 一起添加到数据库
INSERT INTO `erm_course` ('course_name','course_type_id','course_time') VALUES ('1','1','5'), ('1','1','7'), ('1','1','7'), ('1','1','7'), ('1','1','7');
要执行这条 SQL 语句
我知道,在进行联表查询时,在控制器里要有$model=User::find()->joinWith(‘userinfo’);
如下:
//后台显示注册会员列表
public function actionList(){
$model=User::find()->joinWith('userinfo');
$count=$model->count();
$pageSize=\Yii::$app->params['pageSize']['user'];
$pager=new Pagination(['totalCount'=>$count,'pageSize'=>$pageSize]);
$users=$model->offset($pager->offset)->limit($pager->limit)->all();
return $this->render('list',['users'=>$users,'pager'=>$pager]);
}
同时在model-User里要加上:
public function getUserinfo(){
return $this->hasOne(UserInfo::className(),['userid'=>'id']);
}
在视图里显示的时候要在关联的表字段加上…->userinfo->…
如下:
<?php foreach($users as $users): ?>
<tr>
<td class="center"><?php echo $users->id;?></td>
<td class="center"><?php echo $users->userinfo->loginip;?></td>
......
</tr>
<?php endforeach;?>
但在注册的时候,如何在插入数据到user表的同时(或者之后),插入数据到userinfo表?
我现在的思路是:1.先插入user表,再用该插入进数据表user后对应的id来插入到userinfo表(但是这样可能插入不同步造成会员列表页报错,因为会员列表页有$users->userinfo->loginip,而这个又得和user表一一对应)?2.在插入user表的同时插入userinfo表(也就是用事务),但是这有个问题:怎么获取插入user表的数据的自增主键id?(因为事务是同时执行的,也就是user表都没插入呢,怎么知道User的Id?)
或者还有什么更好的思路?
你要知道$model->save()
成功之后返回的就是主键ID。这儿事务的同时
指的是大家一起成功或者一起失败,如果info保存失败,那么user->save()
也会失败,所以不要担心获取不到id。
所以,你可以在userinfo的model里,加一个生成用户资料的方法:
然后在注册的model里加上
在Yii/frontend/web下的注册页面可以同时该账号已存在
model里面代码是:
['username', 'trim'],
['username', 'required'],
['username', 'unique', 'targetClass' => '\common\models\User', 'message' => '这个用户名已经被采取。'],
['username', 'string', 'min' => 6, 'max' => 16],
这个原理是在\common\models\User
里面,但我照着他的写没反应,请问这个原理的意思是怎样实现的?
当然,你发现了当你输入用户名密码并且点击提交按钮获取用户名存在的提示时,页面几乎原封不动。这很有趣。但这和验证用户名唯一是没有关系的,这其中大多数是ActiveForm的功劳。
至于你照着写却没反应,这涉及到了非常之多。不好猜测。
不过建议你参考下这篇 http://www.yiichina.com/tutorial/965 去花费 30 秒完成YII2的登录注册然后观察其注册完整流程,这会很有帮助的。
具体去看下验证规则的代码呀。
在yii目录下是有的,在UniqueValidator.php文件中
有一种是当你输入完名字之后,直接判断是否存在。(不是说点了注册才开始判断)
那么这种做法是,开启ActiveForm
的enableAjaxValidation
然后在controller
里添加一个ajax
验证字段
和你的session存储有关,如果是默认文件存储,可能是磁盘性能太差了。
我不想玩bootstrap啊。。。。但是这绑定的太深,我想自己去自定义表单的样式,和错误显示的位置,或者让错误弹出来,该怎么办啊,哪位大虾能给出一个解决方案。
那你应该摒弃ActiveForm,而这并不会影响模型在服务端的作用。
你依旧可以以模型验证数据合法性并且存入数据库。而如果某项数据不合法。你也可以通过 模型 的 errors 属性获取不合法原因并且返回给前端。
然后自由你的前端。
默认就给了自定义的选项呢
验证这一块同样不理解
yii2 basic 上传图片求指教,新手哇,谢谢
1.如果你会用composer,可以从Github上安装这个插件,传送门
或者看白狼栈大大的这篇文章
2.如果不会用composer安装插件要自己写上传,参考这篇文章吧
如果你仅需要上传文件,那么没有比http://www.yiichina.com/doc/guide/2.0/input-file-upload更适合你的了。
上述链接依旧可以完美解决你的问题的。当然,在你预览图片时可能额外需要一个库。它会很不错
https://blueimp.github.io/Gallery/。
但是,你现阶段的问题应该还是文件上传,然后把上传之后的路径存入数据库。所以你无需任何插件。
求问怎样在yii中引入自带的jquery文件?
YII 默认是引入JQ的,因为 yii.js 是依赖于JQ的。你可以在AppAsset中发现如上依赖。
然而你发现你写的JS代码在引入 JQ 的script 的上面。这将导致你书写的JQ代码无效甚至报错。
这很有趣,但是当你发现了原因尝试了许久却发现他们就差几行的距离却死活调换不了位置时。你会很蛋疼。
而解决的方式是你可以把JS代码放入到视图中的 $this->registerJS()中,这将确保JS代码是处于JS库的下方。这看起来像是酱紫的:
当然,你的JS代码或许不会如此简单。而确保多行JS代码的可读性。你可以先放到 视图 的 代码块 中,如下所示:
如果是yii2,你右键查看下源代码,我没记错的话,他默认就引入了
默认引入了,