小编apo*_*fos的帖子

打印到PDF时更改默认页眉/页脚

我正在尝试使用Google Chrome替代PhantomJS将HTML呈现为PDF.到目前为止,它对我来说一直很好.我唯一的问题是我没有找到任何方法来翻译以下PhantomJS代码:

page.paperSize = {
  footer: {
    contents: phantom.callback(function(pageNum, numPages) {
      return "Power by MyWebsite. Created on "+formatDate(new Date())+"<span style='float:right'>" + pageNum + " / " + numPages + "</span>";
    })
  }
}
Run Code Online (Sandbox Code Playgroud)

格式化日期与问题中的函数相同如何格式化JavaScript日期

但是,我还没有找到一种方法来在谷歌Chrome中无头复制这种行为.我正在使用来自https://github.com/cyrus-and/chrome-remote-interface的 Chrome远程接口(CDP)

这是我的chrome远程接口代码的概述:

return new Promise(async function (resolve, reject) {
    const url = "<MyURL here>";
    const [tab] = await Cdp.List()
    const client = await Cdp({ host: '127.0.0.1', target: tab });
    await Promise.all([
       Network.enable(),
       Page.enable()
    ]);

    Page.loadEventFired(function () { 
         setTimeout(function () {
             resolve(Page.printToPDF({displayHeaderFooter:true}))); //https://chromedevtools.github.io/devtools-protocol/tot/Page/#method-printToPDF
         }, …
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome google-chrome-headless

19
推荐指数
4
解决办法
1万
查看次数

使用Docx.js在JavaScript中生成Word文档?

我正在尝试使用docx.js生成Word文档,但我似乎无法让它工作.

在修改第247行以修复"'textAlign'未定义错误"后,我将原始代码复制到Google Chrome控制台中

if (inNode.style && inNode.style.textAlign){..}
Run Code Online (Sandbox Code Playgroud)

这使得该功能convertContent可用.其结果是Object,例如

JSON.stringify( convertContent($('<p>Word!</p>)[0]) )
Run Code Online (Sandbox Code Playgroud)

结果是 -

"{"string":
      "<w:body>
            <w:p>
                <w:r>
                    <w:t xml:space=\"preserve\">Word!</w:t>
                </w:r>
            </w:p>
       </w:body>"
 ,"charSpaceCount":5
 ,"charCount":5,
 "pCount":1}"
Run Code Online (Sandbox Code Playgroud)

我复制了

<w:body>
    <w:p>
        <w:r>
            <w:t xml:space="preserve">Word!</w:t>
        </w:r>
    </w:p>
</w:body>
Run Code Online (Sandbox Code Playgroud)

进入Notepad ++并将其保存为扩展名为"docx"的文件,但是当我在MS Word中打开它但是它说"由于内容存在问题而无法打开".

我错过了一些属性或XML标签或其他什么?

javascript ms-word docx

14
推荐指数
2
解决办法
6万
查看次数

我的YouTube视频无法在iframe中展示

这是我在HTML中输入的代码

<iframe width="640" height="360" src="https://www.youtube.com/watch?v=ZwKhufmMxko">
</iframe>
Run Code Online (Sandbox Code Playgroud)

视频帧会显示,但实际视频不会加载甚至显示.我试过等待,所以它不应该是一个加载问题.

我目前也只使用HTML和CSS

关于如何让这个工作的任何想法?

html css youtube iframe

11
推荐指数
2
解决办法
4万
查看次数

增加PHP-FPM空闲超时设置

我们最近迁移到了PHP-FPM.但是我们遇到了一些长时间运行的脚本的问题.代码看起来大致如下:

foreach ($items as $item) {
     set_time_limit(30);
     proccessThatTakesAround2secs(); 
}
Run Code Online (Sandbox Code Playgroud)

正常的PHP脚本时间限制也是30秒.之前工作正常,因为我们将每个项目的剩余时间限制重新设置为30秒.大约有1000个项目,这意味着该脚本通常需要大约30分钟才能完成.但是我们已经达到了以下问题:

FastCGI:comm与服务器"/usr/local/php-5.6.24/sbin/php5-fpm"中止:空闲超时(30秒)

现在我的问题是,将空闲超时增加到一个小时是否明智但仍然确保PHP脚本运行时间不超过30秒,除非我们使用set_time_limit?有没有办法在每个脚本的基础上设置空闲超时(类似于set_time_limit?)

这是我们的池配置:

[www]
user = www-data
group = www-data
listen = /var/run/php5-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = static
pm.max_children = 55
pm.max_requests = 10000

php_value[memory_limit] = 128M
php_value[max_execution_time] = 30
php_value[upload_max_filesize] = 20M
php_value[post_max_size] = 20M
php_value[max_input_vars] = 9999
Run Code Online (Sandbox Code Playgroud)

这是我们的fastcgi.conf

<IfModule mod_fastcgi.c>
    AddType application/x-httpd-fastphp5 .php
    Action application/x-httpd-fastphp5 /php5-fcgi
    Alias /php5-fcgi /usr/local/php-5.6.24/sbin/php5-fpm
    FastCgiExternalServer /usr/local/php-5.6.24/sbin/php5-fpm -socket /var/run/php5-fpm.sock -idle-timeout 30 -pass-header Authorization
    <Directory /usr/local/php-5.6.24/sbin/>
        Require …
Run Code Online (Sandbox Code Playgroud)

php apache mod-fastcgi

9
推荐指数
2
解决办法
3万
查看次数

Laravel Basic HTTP Auth Check返回False

我正在使用Laravel中提供的基本HTTP身份验证登录我的网站.但是,当我打电话时,即使我已登录,Auth::Check()我总是得到错误的回复.

难道Auth::Check()不符合基本的身份验证模式工作,如果没有,有没有什么办法来检查基本身份验证,看是否有用户登录?

这是我的用户类:

namespace App;

use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'email', 'password',
    ];

    /**
     * The attributes excluded from the model's JSON form.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];

    public function getRememberToken()
    {
        return $this->remember_token;
    }

    public function setRememberToken($value)
    {
        $this->remember_token = $value;
    }

    public function getRememberTokenName() …
Run Code Online (Sandbox Code Playgroud)

php authentication http-authentication laravel

7
推荐指数
1
解决办法
2826
查看次数

使用 AJAX 的 Select2 出现在模态后面

我在模态中使用 Select2 但它工作得不太正常,正如您在此处看到的: https: //gyazo.com/a1f4eb91c7d6d8a3730bfb3ca610cde6

结果显示在模式后面。我怎样才能解决这个问题?我读过类似的帖子,但都在谈论删除 tabindex,这是我的代码中没有的东西,所以我不知道如何修复它。这是我的代码:

<div class="remodal shadow" data-remodal-id="keuze" data-remodal-options="closeOnOutsideClick: false">
    <button data-remodal-action="close" class="remodal-close"></button>
    <div class="panel-header">Kies uw type logboek</div>
    <div class="modal-body">
        <select id="select" class="searchselectstyle select2"></select>
        <button data-remodal-action="cancel" class="remodal-cancel mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect cancel">Cancel</button>
        <button data-remodal-action="confirm" class="remodal-confirm mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect send">Aanmaken</button>
    </div>
</div>

<script type="text/javascript">
    token = '{{csrf_token()}}';
    $(document).ready(function() {
        $('#select').select2({
            ajax: {
                type: "POST",
                url: "ajax/getlogtypes",
                dataType: 'json',
                data: function (params) {
                    return {
                        q: params.term, // search term
                        page: params.page,
                        '_token' : token
                    };
                },
                escapeMarkup: …
Run Code Online (Sandbox Code Playgroud)

javascript ajax jquery jquery-select2

7
推荐指数
2
解决办法
1万
查看次数

致命错误:未捕获错误:调用未定义函数ereg_replace()PHP 7

下面的代码给了我在PHP 7中的致命错误

    $jquery_click_hook = ereg_replace("[^A-Za-z0-9]", "", strtolower($value['name']));
Run Code Online (Sandbox Code Playgroud)

有没有办法让它与PHP 7兼容?

php ereg-replace php-7

7
推荐指数
2
解决办法
4万
查看次数

Laravel spatie/laravel-permissions 命名约定

在命名权限方面,我应该遵循一些命名准则吗?现在,我找到的所有内容都类似于“添加 Foo”、“编辑 Foo”、“删除 Foo”、“添加 FooBar”、“编辑 FooBar”、“删除 FooBar”等等。

请记住,没有分组(这真是遗憾),并且当您有所有上述权限的管理屏幕时 - 上述方法似乎相当草率。

您所有的“添加”都在一起,“编辑”都在一起,等等,例如:

 - Add Foo
 - Add FooBar
 - Add FooBarBez
 - Edit Foo
 - Edit FooBar
 - Edit FooBarBez
 - Delete Foo
 - Delete FooBar
 - Delete FooBarBez
Run Code Online (Sandbox Code Playgroud)

现在我倾向于类似于路线名称的东西,例如:

 - foo.add
 - foo.edit
 - foo.delete
 - foobar.add
 - foobar.edit
 - foobar.delete
 - foobarbez.add
 - foobarbez.edit
 - foobarbez.delete
Run Code Online (Sandbox Code Playgroud)

它在将所有“父”权限保持在一起方面更有组织性(即:所有 Foo 在一起,所有 FooBar 在一起,等等)。当然,如果有实际的指导方针,请告诉我,或者您有其他有价值的意见/建议吗?

//为了清晰起见编辑更新

具体来说,

- __Are__ any naming conventions? 
- Are there any preferences in terms of use of singular/plural …
Run Code Online (Sandbox Code Playgroud)

naming-conventions user-permissions laravel laravel-5 laravel-permission

7
推荐指数
2
解决办法
2861
查看次数

测试流式响应

我有以下路线:

Route::get('echo',function (Request $req) {
    return response()->stream(function () use ($req) {
        echo json_encode($req->all());
    }, 200, [
        'Content-Type' => 'application/json'
    ]);
})->name('echo');
Run Code Online (Sandbox Code Playgroud)

为了简单起见,我们假设它是一个简单的回声响应。实际上,这是一个非常大的文件。两种情况下的结果都是一样的。

现在我想测试这条路线,看看我是否确实可以看到那个 json 内容,所以我试过这个:

public function testBasicTest()
{

    $response = $this->get(route('echo', [
        "content"=>"some content"
    ]));
    $response->assertSeeText("some content"); //Doesn't work
    $response->assertJson( [
        "content"=>"some content"
    ]); //Neither does this
}
Run Code Online (Sandbox Code Playgroud)

我进一步检查了它,这似乎是因为 (a) 响应被包裹 a TestResponse(b) 响应内容从不流式传输和 (c) 即使响应内容将通过$response->baseResponse->sendContent()实际内容强制流式传输被回显而不是被实际捕获TestResponse

此外调用$response->getContent()不起作用,因为它似乎直接调用StreamedResponse::getContent()硬编码的 return false

我使用以下方法取得了一些有限的成功:

ob_start();
$response->sendContent();
$result = ob_get_clean();
Run Code Online (Sandbox Code Playgroud)

然而,这在单元测试中看起来是一件非常草率的事情。

有没有其他人遇到过这种情况?是否可以测试流式响应的内容?

php phpunit laravel

7
推荐指数
1
解决办法
2071
查看次数

如何在 TypeScript 中绑定泛型函数

我正在尝试将通用函数绑定到特定的上下文和参数,但是我似乎无法找出正确的方法来做到这一点。

这是我的代码:

interface A {}

interface Repository<T> {
  save(item: T): boolean;
} 

const updater = <T>(repo: Repository<T>, item: T) => {
  // do things and update
};

const items: A[] = [];
const repo: Repository<A> = {
  save(item: A) {
    /* do things */
    return true;
  }
}

items.forEach(updater<A>.bind(null, repo)); // Line with issue
Run Code Online (Sandbox Code Playgroud)

这里的想法是有一个通用函数,它将存储库作为第一个参数,当绑定时将创建一个适合在 forEach 中使用的函数。但是我得到了像( expected和这样的错误cannot find name 'bind'

我不完全确定我的语法是否有问题,或者我遗漏了什么。

我也试过:

updater.bind(null, repo)
Run Code Online (Sandbox Code Playgroud)

但是这不适用于 3.2 选项,strictBindCallApply因为它假定类型参数T={}

有谁知道正确的方法来做到这一点?

游乐场链接

generics typescript function-binding

7
推荐指数
0
解决办法
1052
查看次数