YII2独立开发遇到的坑
之前开发的时候,遇到图片上传什么的都是直接用前辈们配好的插件等等,换了家公司以后,要自己独立开发项目,顿时遇到了问题,开始是项目的配置,然后在添加的时候遇到了图片上传的问题,开始我以为post提交表单会直接在控制器中获取提交的文件,然后我一直找为什么post提交的图片会为空,经过一段时间的百度和前辈的指导,终于找到了代码和原因,原来提交文件需要另一个方法把东西给拿出来,现在给大家贴出代码:
$file = UploadedFile::getInstance($model, 'img');//获取提交文件的信息
$dir = "../../frontend/web/image/news/" . date("Ymd");//文件的保存路径
if (!is_dir($dir)) {//判断是否有这个目录
mkdir($dir);//创建目录
}
//文件名
$fileName = date("HiiHsHis") . $file->baseName . "." . $file->extension;
//var_dump($fileName);
//保存路径
$dir = $dir . "/" . $fileName;//文件的保存路径
//var_dump($dir);
//保存文件
$file->saveAs($dir);
代码都在这里,注释的很清楚,这是我用YII写的。
然后写着写着又遇到了问题,就是编辑器,曾今的我也是直接复制粘贴就行了,从来没有自己导入过插件,经过一番百度,使用了composer下载了百度编辑器,使用的方法也很简单:
<?= $form->field($model, 'content', ['inputOptions' => ['class' => 'input_style input_style2']])->widget('kucha\ueditor\UEditor',[
'id'=>'content','name'=>'content',
'clientOptions' => [
//编辑区域大小
'initialFrameHeight' => '400',
'initialFrameWidth'=>'1600',
//设置语言
'lang' => 'zh-cn', //中文为 zh-cn
]
]) ?>
设置这些百度找到,在这之后又有了需求,修改的时候要把整条信息显示出来,然后我的方式是用Jquery的post方法传个ID到控制然后返回数据,再渲染到前端的页面,结果问题来了百度编辑器怎么写参数这数据就是出不来,下面是我的普通输入框的写法:
<?= $form->field($model, 'abstract', ['inputOptions' => ['class' => 'input_style input_style2']])->textInput()->label(false); ?>
红色部分就是我输出值的部分,结果百度了很久找不到输出的方法,后来在群里老哥的帮助下,我解决了这个麻烦:
$model->content=$strategy['content'];
对,就是这么简单,YII在控制器可以直接指定model的值,但我就是不知道,还是感谢群里的几位老哥热心帮助啊,不然真的难顶