无法使Browsershot与查询字符串参数一起使用

时间:2018-08-21 02:41:42

标签: php node.js laravel

我正在使用spatie / browsershot 3.24运行PHP Laravel 5.5。*,从从路由生成的URL中提取HTML时遇到了问题。
代码:

$url = route('pdfs.plans.results', [
                'lang' => $culture->code,
                'id' => $id,
                'user_id' => \Auth::user()->id,
                'pdf-token' => $token->token,
            ]);

现在,我只想添加此路由生成的原始html:

dd(Browsershot::url($url)->bodyHtml());

但是,这失败了,这似乎是由于url字符串中的查询参数引起的
示例url:http://localhost/pdf/plans/results/share?lang=en_US&id=17&user_id=8&pdf-token=PEvWJ7MB7sgQWM9AUfciceL4zNvZrLaSeemGf5J4kGzfOKvaMe8L0FTf32Da
一旦它到达第二个参数'&id=17',它就会中断声明:

'id' is not recognized as an internal or external command

这告诉我NodeJS发生了什么变化,我猜想&符正在抛出它,并且我想将另一个命令传递给控制台,但是我不知道该如何解决。
有没有更好的方法来传递URL,或者是一种替代/更好的方法来从Laravel刀片(运行VueJS)中提取呈现的HTML,然后将其用于PDF生成或其他业务需求?

谢谢!

1 个答案:

答案 0 :(得分:1)

也许Windows仅与相关问题有关,因为我还没有在Linux上尝试过,但是我逃避了&并且现在一切正常。

$url = str_replace('&', '^&', $url)