Laravel 实战开发知乎:发布问题
打赏作者

zyzplzyz

群主请问5.2版本的用sendcloud 模板
data=[url=>route(sendemail,[token,data = ['url' => route('send email',['token',user->confirmation_token]),
‘name’=>$user->name
];
不能这样写??
我邮箱得到的URL是这样的
请激活你的账号 http://demo.dev/email/send/token?61SlyKJirHKGFbyjVDZL60dOiw0HLDX5XsUL2453
我的routes是这样写的 Route::get(‘email/send/{token}’,[‘as’=>‘send email’,‘uses’=>‘EmailController@send’]);
请问哪里错了

JellyBool 回复 zyzplzyz

这样的吧:

$data = ['url' => route('send email',[$user->confirmation_token]),

             'name'=>$user->name
            ];
zyzplzyz 回复 JellyBool

谢谢,群主了,我想问下,这个在文档中我怎么找不到呢??

Aaron-wlh

请问 用编辑器上传图片的时候出现ueditor.all.js:24515 POST http://dev.zhihu.com/ueditor/server?action=upload-image&_token=V8sGa1iMUbCVeo2v8co4nXRIInr9Nrz01MsQbHoi 500 (Internal Server Error)错误,我的public文件夹里并没有’/uploads/image/{yyyy}/{mm}/{dd}/目录 这要怎么解决呢?

JellyBool 回复 Aaron-wlh

基本上就是 没配置路由吧。

话说你看了视频了么?

xiaofengzhi 回复 JellyBool

我的public文件夹里也没有那个目录,结果上传文件的时候只显示个文件名字,本地也没自动创建那个目录,还需要什么配置吗,路由肯定是配置过了

JellyBool 回复 xiaofengzhi

基本上就是 laravel 的版本没对上吧

xiaofengzhi 回复 JellyBool

嗯我用的是laravel5.4的,不过我用软连接链过去了就好了,插件给上传到storage目录下了

ljw8229263 回复 Aaron-wlh

這個問題我也遇到了
這個和配置路由 沒有 關係 具體問題是 rand 這個函數 的問題

ErrorException in StorageManager.php line 217:
rand() expects parameter 2 to be integer, float given

這個函數 在 window 系統下的 最大值 不能 超過 32768 個範圍
修改方法
需要修改vendor/overtrue/laravel-ueditor/src/StorageManager.php中217行
randNum = rand(1, 10000000000).rand(1, 10000000000); 修改為 randNum = rand(1, 10000).rand(1, 10000);
就好了

JellyBool 回复 ljw8229263

我擦,真这么坑?去提个 issue 看看

reswqa

上传图片和视频都显示上传失败是怎么回事呀

reswqa

已经解决了 是没开启php_fileinfo 扩展

hard88

麻烦问一下,我的上传图片一直失败

JellyBool 回复 hard88

具体是什么错误啊,你这样说谁也看不出来啊

hard88 回复 JellyBool

显示红色提示信息上传失败和本地保存成功或者是选择完图片,又跳出选择图片的窗口,两个情况都出现了。谢谢

JellyBool 回复 hard88

你看看 chrome dev-tool 有什么报错没?

hard88 回复 JellyBool

Failed to load resource: the server responded with a status of 500 (Internal Server Error)
ueditor.all.js:24515 POST http://localhost:8000/ueditor/server?action=upload-image&_token=DCOg4kfunug43Hgo0nhrvmraonGi8pTH8msKEBQ3 500 (Internal Server Error)
(anonymous) @ ueditor.all.js:24515
ueditor.all.js:24515 POST http://localhost:8000/ueditor/server?action=upload-image&_token=DCOg4kfunug43Hgo0nhrvmraonGi8pTH8msKEBQ3 500 (Internal Server Error)

JellyBool 回复 hard88

感觉是服务器的重写规则没有配置好,你用的是 apache 还是什么?

hard88 回复 JellyBool

apache

hard88 回复 JellyBool

跟php_fileinfo 扩展没有关系?我不太了解,看楼上这个问题,顺便再问一下,麻烦了

JellyBool 回复 hard88

你确定一下 php_fileinfo 有没有开启呗。你可以在 chrome dev-tool 看到具体的错误的啊。

Failed to load resource: the server responded with a status of 500 (Internal Server Error)
ueditor.all.js:24515 POST http://localhost:8000/ueditor/server?action=upload-image&_token=DCOg4kfunug43Hgo0nhrvmraonGi8pTH8msKEBQ3 500 (Internal Server Error)
(anonymous) @ ueditor.all.js:24515
ueditor.all.js:24515 POST http://localhost:8000/ueditor/server?action=upload-image&_token=DCOg4kfunug43Hgo0nhrvmraonGi8pTH8msKEBQ3 500 (Internal Server Error)

这只是 console 的错误吧,你上传图片的时候看看 network 那里报错的 url ,再点开看具体的报错信息。

hard88 回复 JellyBool

非常感谢,刚检查了一下,在php.ini把extension=php_fileinfo.dll前面的;去掉了,但还是不行。问题从Network中显示
ErrorException in StorageManager.php line 217:
rand() expects parameter 2 to be integer, float given

JellyBool 回复 hard88

嗯哼,你好,我看了一下源码:

https://github.com/overtrue/laravel-ueditor/blob/master/src/StorageManager.php#L217

代码貌似没有问题,不过可能是由于 rand() 这个函数在不同平台的表现不一样。比如 32 bit 的 windows 最大可能是 32767

http://php.net/manual/en/function.rand.php

所以目前来说,你改一下这一行代码,或者我去跟作者提个 pr 试试

 $randNum = mt_rand(1, 10000000000).mt_rand(1, 10000000000);
        if (preg_match("/\{mt_rand\:([\d]*)\}/i", $path, $matches)) {
            $path = preg_replace("/\{mt_rand\:[\d]*\}/i", substr($randNum, 0, $matches[1]), $path);
        }
hard88 回复 JellyBool

$randNum = rand(1, 10000000000).rand(1, 10000000000);
改这行么,怎么改写min和max。。麻烦了

hard88 回复 JellyBool

我是64bit的win

JellyBool 回复 hard88

https://github.com/overtrue/laravel-ueditor/commit/c59c297d11e6624d006bcf9a5187103281f91d12

作者已经 fix 这个 bug 了。看看更新一下 laravel-ueditor 版本可以不。

hard88 回复 JellyBool

可以了,非常感谢站长

JellyBool 回复 hard88

OK,以后问问题尽量贴报错信息吧。

你看你从贴出这个报错信息:

ErrorException in StorageManager.php line 217:
rand() expects parameter 2 to be integer, float given

问题很快就解决了

hard88 回复 JellyBool

好的,收获了很多~

DTone 回复 hard88

请问下,你那个图片上传说怎么解决的呢?

yff

我记得如果 路由里面这么写的话

Route::resource('/question', 'QuestionController');

就不需要在里面重新命名路由了
55578607-7f99-46d3-a1a7-0911b27db6e1

JellyBool 回复 yff

OK,阔以的!

Augus

我看视频一般都快进两倍速度。2倍速度听起来爽。
本视频,3:20 - 3:50 秒,2倍速度下,莫名戳中笑点。捂脸~捂脸~~

JellyBool 回复 Augus

这。。。很多人都觉得视频讲快了

ye0205414225

老師好我的代碼如下 卻接收到空值?

$data = [ 'title' => $request->get('title'), 'body' => $request->get('body'), 'user_id'=> Auth::id() ];

JellyBool 回复 ye0205414225

记得登录进来和正确使用 Auth:

use Auth;
DanceSmile
Route::resource("spot","SpotController",["names"=>[
          'create' => "spotcreate"
    ]]);

这种resource 的names语法你是怎么知道的, 我翻了手册 怎么也好不到。手册上也没写啊好像!!

JellyBool 回复 DanceSmile

纳尼…我记得我在文档看到过

maokeyang 回复 JellyBool

点击编辑器的时候 选择图片 选择图片窗口 好慢才出现 环境 mac chrome,老大你那边也是一样吗

JellyBool 回复 maokeyang

我这边没有这个情况。。。

hmengpang

大佬,用5.4版本在比着这个视频学,上传图片的路径是在strorage/app/upload/image/YY/mm/DD ,上传成功且本地有图片,但是就是读不到图片。提示找不到路由,但是我看您的视频里面并没有针对这个图片写路由阿。。

JellyBool 回复 hmengpang

可能需要 storage:link 这个 artisan 命令

hmengpang 回复 JellyBool

还是一样。。就很气。。。

JellyBool 回复 hmengpang

先去看看这个文档吧,storage 部分

hmengpang 回复 JellyBool

已哭瞎。。。nginx配置的域名是.cn,配置文件写成.com了。。。

nanibigoo 回复 JellyBool

5.4 这个解决方式正确,已验证,话说之前没太习惯使用控制台调试,这一条条评论下来,控制台也会用了

Ming Zhou 回复 JellyBool

我也是5.4,上传图片的时候也是出现这种情况,执行storage:link这个命令之后确实可以显示图片了,用php artisan list查看了一下,是这么解释的"Create a symbolic link from “public/storage” to “storage/app/public”。
原来是在public下创建一个指向"storage/app/public"的"storage"文件夹快捷方式,这样就能通过这个快捷方式直接访问到了。
创建后windows下看"public/storage"文件夹会发现文件夹图标左下角有个快捷方式标识,ubuntu用ll命令会看到ln后指向的路径。

没想到一个小问题就能引申出这么多东西

WannaProGrammer 回复 Ming Zhou

我也遇到了這個問題,加了軟連接,storage的映射和你的一樣,但還是不能顯示圖片,衹能保存。
圖片路徑是這樣的src="http://localhost/storage/uploads/image/2017/05/15/7779bb0a83b3066984b22063e5698c07.jpeg"
路徑應該和你們的不一樣,但不知道怎麽改。。。

Ming Zhou 回复 WannaProGrammer

你的localhost是指向哪个文件夹?如果是本地开发的话,你没有配置一个vhost吗?

WannaProGrammer 回复 Ming Zhou

你好,我是用homestead开发的,homestead.yaml和hosts文件已配置好。而且之前5.1版本下用其他编辑器显示图片可以显示。这次不知道为什么图片src指向了localhost。

WannaProGrammer 回复 Ming Zhou

解决了,犯了个低级错误,.env里的APP_URL没修改

Stefango 回复 WannaProGrammer

我的.env里的APP_URL已经改为http://zhihu.test,但是访问图片的时候还是有问题,请求地址还是localhost

XBisATrouble

您好,ueditor里设置了qiniu,然后laravel-filesystem-qiniu也配置正常,但是打开ueditor,单图上传为灰色,多图上传打开本地上传标签中报错,后端配置项没有正常加载,上传插件不能正常使用!
tim 20170423215416

JellyBool 回复 XBisATrouble

这个基本就是因为服务器(nginx 和 apache 没配置好吧)

storm19890129

@JellyBool laravel5.4下没法上传图片,何解?

JellyBool 回复 storm19890129

目前的信息来看,不知道

storm19890129 回复 JellyBool

OK了,执行了storage:link

提利昂55

这不是一个BUG是你写错了,哈哈哈。

提利昂55

问一下,你return 的格式这么好看,是chrome的插件,还是laravel的插件啊?

JellyBool 回复 提利昂55

chrome 插件,

JSON Formatter

提利昂55 回复 JellyBool

问题解决了,还是撤销掉吧。

JremeryHe

Question的模型里面为什么没有protected $table。。去连接对应的表。就可以直接使用Question::where这个方法呢

Lamborshea

我的图片上传到编辑器容器中,但是为什么不能像你那样直接预览图片呢

wangshuaiws

请问一下问什么我点击上传图片的按钮后要等5,6秒才会出现要选择的框框? 而且上传图片的路径为什么是storage目录??

wangshuaiws

528fd6f07fd6bc1b39bb1b50e6861191.jpeg:1 GET http://zhihu.app/storage//uploads/image/2017/05/20/528fd6f07fd6bc1b39bb1b50e6861191.jpeg 404 (Not Found) 这样的是不是源码哪里不对??

JellyBool 回复 wangshuaiws

图片的路径没对而已u

wangshuaiws 回复 JellyBool

但是本地没有上传的图片啊?没有上传成功。是不是上传的哪个地方出错了、?

mafeifan

5.4 上传图片不显示的,尝试使用php artisan storage:link。执行后你会发现/public目录下多出了一个storage目录的软链接或者如果你用Linux的ls -s命令自己创建软连接。
注意先修改.env配置文件中的APP_URL。比如我配的是http://zhihu.finley.com。上传图片的完整地址就是http://zhihu.finley.com/storage/uploads/image/2017/05/22/0791ccddfc87e68368ebbbd4483b8378.jpeg

2kpo 回复 mafeifan

加了软连接之后虽然图片可以显示,但是图片还是没有上传到public/uploads/image下而是在storage/public/uploads下,请问要怎么改成上传到public目录下呢?

mafeifan 回复 2kpo

因为是利用ueditor编辑器上传图片,打开他的配置文件\config\ueditor.php用到的存储是’disk’ => ‘public’。然后打开\config\filesystems.php 修改 ‘public’ 下面的root及url就行了,比如改成public_path(…)

2kpo 回复 mafeifan

3q 搞定了

noikiy 回复 2kpo

您的评论对我非常有用!谢谢!

JellyBool 回复 noikiy

嗯哼,所以后面看视频的时候,多看评论

2kpo 回复 noikiy

哈哈 互相帮助

crisis

为什么我的文件上传失败 不建立目录 不上传文件到指定目录 环境 win homestead

Alliswell_lc

总算解决了图片能上传,路径正确,但是不显示的问题。
原来是软链接没有生效,必须用‘’管理员‘’身份运行命令行连接虚拟机,创建的软链接才是有效的

yixianliu

想问问,有人用这个遇到过,路径载入这个问题吗?少了public,怎么回事呢?

JellyBool 回复 yixianliu

就是你的服务器重写规则和root没配置对吧

yixianliu 回复 JellyBool

站长你的访问index.php,是根目录那个,还是在public目录那个?

JellyBool 回复 yixianliu

跟目录并没有 index.php ,我记得好多视频我都说过怎么指定 root 的问题

yixianliu 回复 JellyBool

不好意思,站长可以再发一次,你指定root的视频吗?

小k书

而且打开上传图片,窗口打开很慢

noikiy

laravel5.4
解决图片不显示
执行 php artisan storage:link
因为ueditor.php中:
// 存储引擎: config/filesystem.php 中 disks, public 或 qiniu
’disk’ => ‘public’,
所以到/config/filesystems.php 修改如下:
‘disks’ => [

    'local' => [
        'driver' => 'local',
        'root' => storage_path('app'),
    ],

    'public' => [
        'driver' => 'local',
        'root' => public_path('/'),
        'url' => env('APP_URL').'/',
        'visibility' => 'public',
    ],
Perfect丶戈 回复 noikiy

可以评论没有点赞功能。你的评论很有用~

JellyBool 回复 Perfect丶戈

啊哈,新版就有了,快了,新版要上线了,这几天都在忙

ickay 回复 noikiy

编辑器里面的图片路径三个/,去掉’url’ => env(‘APP_URL’).’/’,里面的/还是有两个,强迫症患者表示很难受。。

Young

我擦这坑太多了了了,根本来不及踩踩踩。。。
图片保存路径的确在storage中,上传时图片的确不显示,我的5.3 非要执行php artisan storage:link 才行!
如果用户使用会是什么样子,不敢想象额。。
现在版本的ueditor上传图片的确有些卡顿延时。。。
不说了又浪费了好长时间了了。。。

JellyBool 回复 Young

https://laravel.com/docs/5.3/filesystem#the-public-disk

如果用户使用会是什么样子,不敢想象额。

这根用户有什么关系。。。

Young 回复 JellyBool

额 我担心用户使用时会不会出问题,啊哈哈哈教主果然牛X,还是官方文档稳。
能不能也教教我们如何出现问题进行自查和如何学习好官方这个文档

JellyBool 回复 Young

关注 laravel 的 github 动态最好不过了。

Young 回复 JellyBool

laotie nice shuangji sixsixsix

UncleCaozy

这个编辑器其实就是markdown形式的吧?

JellyBool 回复 UncleCaozy

不是,是 html 的吧

taizujunshang

各位大神, 为什么我明明执行了 php artisan storageg:link, APP_URL 也改了,地址是这个http://zhihu.dev/storage/uploads/image/2017/08/23/0cdad51c2ae0e8aa4cc2c1942b3b60a2.jpg,编辑器里还是显示不出来,但是明明已经上传了,用的 laravel 5.5 和 homestead

taizujunshang

直接访问了也不行,感觉路径写的也没错

JellyBool 回复 taizujunshang

你把文件直接放到 public 目录下试试,或者还是直接使用 又拍云 等云存储吧

iopkq999

一直困扰我很久的问题就是我使用model eloquent orm的方法 类似这样
Question::find($id);
都会有个黄色波浪线,Non-static method should not be called statically’
但是实际又不会报错,正常的。就是有个黄色波浪线提示这个。
请问下是怎么回事呢 laravel 5.5

JellyBool 回复 iopkq999

魔术方法,你看看深入 Eloquent model 的视频,记得有源码解读的

bourne

我是按照流程一步步写下来的,扩展和php artisan storage:link都没问题。但是也是和上面很多人一样存在“后端配置项没有正常加载,上传插件不能正常使用!“,F12查问题显示是:ueditor.all.js:8228 GET http://localhost/ueditor/server?action=config&&noCache=1505978478476 404 (Not Found)
doAjax @ ueditor.all.js:8228
request @ ueditor.all.js:8372
(anonymous) @ ueditor.all.js:8069
setTimeout (async)
UE.Editor.loadServerConfig @ ueditor.all.js:8059
UE.Editor @ ueditor.all.js:6732
UE.ui.Editor @ ueditor.all.js:29196
UE.getEditor @ ueditor.all.js:29320
(anonymous) @ create:98
ueditor.all.js:8092 请求后台配置项http错误,上传功能将不能正常使用!
之前问题更多,然后我修改了ueditor.php配置文件,增加了上传文件的路径,错误少了几个,但是上面两个问题实在没办法解决,实际上上面显示的错误链接http://localhost/ueditor/server?action=config&&noCache=1505978478476 404 (Not Found)是没有办法访问的,要改为
http://localhost/zhihu/public/index.php/ueditor/server?action=config&&noCache=1505977833036才可以访问,但是不知道这个路径在哪里改,看了下源码,改了一点还是不行,只能求救了

JellyBool 回复 bourne

这个我感觉多半就是服务器(apache nginx)的重写规则没写对

liujun

想问一下:为什么我return $question 打印在谷歌上是utf-8码?

JellyBool 回复 liujun

你转个json 的插件呗,我用的是 jsonformatter

李大饼儿同学

为啥没有删除,我解决了,晕了晕了

JellyBool 回复 李大饼儿同学

我觉得解决了的话,把解决方案放出来是最好的。而不是解决之后删掉,所有没有删除。

dzhonline

按照步骤一步一步来的,但是编辑器出不来T_T,可能会有些什么原因呢?

Stefango

如果使用bootstrap4的话,需要将.pull-right改为.float-right