Laravel 实战开发知乎:发布问题
zyzplzyz

群主请问5.2版本的用sendcloud 模板
$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

这样的吧:

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

             'name'=>$user->name
            ];
zyzplzyz

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

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

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

话说你看了视频了么?

ljw8229263

這個問題我也遇到了
這個和配置路由 沒有 關係 具體問題是 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

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

reswqa

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

reswqa

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

hard88

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

JellyBool

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

hard88

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

JellyBool

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

hard88

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

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

hard88

apache

hard88

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

JellyBool

你确定一下 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

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

JellyBool

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

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

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

hard88

我是64bit的win

JellyBool

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

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

hard88

可以了,非常感谢站长

JellyBool

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

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

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

问题很快就解决了

hard88

好的,收获了很多~

yff

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

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

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

JellyBool

OK,阔以的!

Augus

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

JellyBool

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

ye0205414225

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

` $data = [

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

JellyBool

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

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

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

JellyBool

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

maokeyang

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

JellyBool

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

hmengpang

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

JellyBool

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

hmengpang

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

JellyBool

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

hmengpang

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

nanibigoo

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

Ming Zhou

我也是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

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

Ming Zhou

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

WannaProGrammer

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

WannaProGrammer

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

XBisATrouble

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

JellyBool

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

storm19890129

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

JellyBool

目前的信息来看,不知道

storm19890129

OK了,执行了storage:link

提利昂55

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

提利昂55

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

JellyBool

chrome 插件,

JSON Formatter

提利昂55

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

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

图片的路径没对而已u

wangshuaiws

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

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