之前开发的时候,遇到图片上传什么的都是直接用前辈们配好的插件等等,换了家公司以后,要自己独立开发项目,顿时遇到了问题,开始是项目的配置,然后在添加的时候遇到了图片上传的问题,开始我以为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的值,但我就是不知道,还是感谢群里的几位老哥热心帮助啊,不然真的难顶