小编Lui*_*nna的帖子

Yii2:如何为activeform使用自定义验证功能?

在我的表单模型中,我有一个自定义验证函数,用于以这种方式定义的字段

class SignupForm extends Model
{
    public function rules()
    {
        return [
            ['birth_date', 'checkDateFormat'],

            // other rules
        ];
    }

    public function checkDateFormat($attribute, $params)
    {
        // no real check at the moment to be sure that the error is triggered
        $this->addError($attribute, Yii::t('user', 'You entered an invalid date format.'));
    }
}
Run Code Online (Sandbox Code Playgroud)

当我按下提交按钮时,错误消息不会出现在表单视图中的字段下,而其他规则则显示所需的电子邮件和密码.

我正在处理注册本机表单,所以为了确保它不是一个存在的问题,我已经设置了规则

['username', 'checkDateFormat']
Run Code Online (Sandbox Code Playgroud)

并删除了与用户名字段相关的所有其他规则,但该消息也没有出现.

我已经尝试过什么都不作为参数checkDateFormat,我试图明确地传递该字段的名称addError()

$this->addError('username', '....');
Run Code Online (Sandbox Code Playgroud)

但没有出现.

设置自定义验证功能的正确方法是什么?

forms validation yii2

23
推荐指数
5
解决办法
6万
查看次数

Fabric.js背景仅在单击后出现

使用以下代码,我创建了一个Fabric画布

canvas = new fabric.Canvas('canvas');
canvas.setWidth(660);
canvas.setHeight(590);

fabric.Image.fromURL('assets/img/materials/marble.bmp', function(image) {
    image.set({
        // I need this because the image size and the canvas size could be different
        // in this way the image always covers the canvas
        width:660,
        height:590
    });

    canvas.setBackgroundImage(image);
});

canvas.renderAll();
Run Code Online (Sandbox Code Playgroud)

画布已创建,但是除非在画布内部单击,否则不会显示背景图像,因为在画布内部单击时会显示背景。

我正在本地计算机上工作,该应用程序不会在线发布。

您为什么认为我遇到了这个问题?我做错什么了吗?我该如何解决此问题?

javascript canvas fabricjs

5
推荐指数
1
解决办法
1216
查看次数

如何从PHP中的字符串中删除多个空格和新行?

我有一个带有文本区域的表单,我需要从输入的字符串中删除最终的多个空格和多个新行.
我写了这个函数来删除多个空格

function fix_multi_spaces($string)
{
    $reg_exp = '/\s+/';
    return preg_replace($reg_exp," ",$string);
}
Run Code Online (Sandbox Code Playgroud)

此函数适用于空间,但它也会替换新行将其更改为单个空格.
我需要将多个空格更改为1个空格,将多个新行更改为1个新行.
我能怎么做?

php regex

3
推荐指数
1
解决办法
3951
查看次数

使用Fabric JS放大和缩小

我正在使用FabricJS构建一个简单的图像编辑器.我几乎可以做任何我需要的东西,问题在于实现缩放功能.据我所知,FabricJS没有任何构建它,所以我试图自己做.

我在"放大"和"缩小"页面上放了2个按钮,点击它们分别激活jQuery功能

$("#zoomin").click(function() {   
    $("#canvas").width(
        $("#canvas").width() * 1.25
    );

    $("#canvas").height(
        $("#canvas").height() * 1.25
    );
});
Run Code Online (Sandbox Code Playgroud)

$("#zoomout").click(function() {
    $("#canvas").width(
        $("#canvas").width() * 0.8
    );

    $("#canvas").height(
        $("#canvas").height() * 0.8
    );
});
Run Code Online (Sandbox Code Playgroud)

其中#canvas是包含画布的div的id.此代码工作正常,但实际上放大和缩小,但是这会导致一个问题,当我想要抓住和画布上的对象四处移动,捕捉区域是不是该对象是可见的,当我放大,捕捉区域结果将移动到可见对象的左上角,当我缩小结果时,结果将移动到右下角.

为了解释,这是缩小后发生的情况 在此输入图像描述

有没有办法使捕捉区域与所示对象的位置一致?

有没有更好的方法来实现缩放功能?

canvas zoom fabricjs

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

如何在Laravel 5和Query Builder中编写"OR WHERE YEAR(...)子句?

areYear()函数重现WHERE YEAR(...)存在,但是怎么样OR WHERE YEAR(...)

在示例中,如何写这个?

WHERE YEAR('date_start') = 2015 OR WHERE YEAR('date_start') = 2016

$query->whereYear('date_start', '=', 2015)->????
Run Code Online (Sandbox Code Playgroud)

php query-builder laravel-5

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

Laravel和Lighthouse,它总是读取dafault模式

我遵循Lighthouse网站上的主版本(4.1)教程。

https://lighthouse-php.com/4.1/getting-started/tutorial.html#installation

我重新安装了Laravel 5.8,然后执行了教程中编写的命令(在旁边npm install

composer require nuwave/lighthouse mll-lab/laravel-graphql-playground

php artisan vendor:publish --provider="Nuwave\Lighthouse\LighthouseServiceProvider"

php artisan vendor:publish --provider="MLL\GraphQLPlayground\GraphQLPlaygroundServiceProvider"

之后,将/graphql/schema.graphql创建一个文件(在项目根目录下,而不是routes以前版本的文件夹下)。

现在,我用一些数据填充数据库,然后将模式从教程页面复制/粘贴到已发布的模式,启动服务器,然后访问显示正确的URL并将请求发送到的Playground http://127.0.0.1:8000/graphql

单击Schema选项卡,我总是看到默认模式,而不是发布的默认模式/graphql/schema.graphql,当然,对与用户不同的资源的查询失败,并显示诸如的错误Cannot query field "posts" on type "Query".。我已经尝试过重启服务器并刷新Playground页面。

config/lighthouse.php文件的架构已注册的路径base_path('graphql/schema.graphql')看起来正确的。

为什么Playground总是显示默认架构,而不显示已发布和编辑的架构?

我正在使用PHP 7.2.14,Lighthouse需要PHP> 7.1

php laravel graphql laravel-lighthouse

0
推荐指数
1
解决办法
177
查看次数