小编Edu*_*rdo的帖子

Yii2.动态添加属性和规则到模型

我正在编写一个小部件,我想避免用户在他们的模型中添加代码(我知道它会更容易但是用它来学习新的东西).

您是否知道是否可以向模型添加属性(不在数据库中,因此它将是虚拟的)并为该属性添加规则?您无权更改该型号代码.

我知道规则是一个数组.在过去,我使用array_merge从父类合并了规则.可以在外部完成吗?Yii2有一个方法吗?

一个想法是扩展用户提供的模型,在我的小部件中使用"模型",并使用:

    public function init() {
      /*Since it is extended this not even would be necessary, 
      I could declare the attribute as usual*/

      $attribute = "categories";
      $this->{$attribute} = null; //To create attribute on the fly

      parent::init();
    }

    public function rules() {
      $rules = [...];

      //Then here merge parent rules with mine.
      return array_merge(parent::rules, $rules);
    }
Run Code Online (Sandbox Code Playgroud)

但是,如果我扩展它,当我在一个复选框的示例中使用ActiveForm中的模型时,它将使用我的"CustomModel",所以我想避免这种情况.还有其他想法吗?如何在不扩展模型的情况下做到这一点?

php yii yii2

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

Ansible - 找不到 pip

我收到此错误:

    TASK [pip] *********************************************************************
    failed: [default] (item=urllib3) => 
{"changed": false, "item": "urllib3", 
"msg": "Unable to find any of pip2, pip to use.  pip needs to be installed."}
Run Code Online (Sandbox Code Playgroud)

根据建议,我运行以下命令:

ansible default -a "which pip"
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

default | FAILED | rc=1 >>
non-zero return code
Run Code Online (Sandbox Code Playgroud)

所以我想这意味着没有安装 pip。我尝试使用以下方法安装 pip:

ansible default -a "easy_install pip"
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

default | FAILED | rc=2 >>
[Errno 2] No such file or directory
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

更新 在 play_local.yaml 中,我有以下任务:

- name: Prepare system
  hosts: default
  become: yes
  gather_facts: false …
Run Code Online (Sandbox Code Playgroud)

ansible ansible-2.x

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

Windows - 在本地站点上获取 ERR_SSL_SERVER_CERT_BAD_FORMAT

我正在使用 Ampps 在 Windows 10 上工作。我使用支持 SSL 的 Ampps Panel 创建了一个域 (tps.local)。我看到它创建了一个证书,但是当我在 Chrome 上工作时,我收到 Get ERR_SSL_SERVER_CERT_BAD_FORMAT 错误。

我努力了:

  1. 正在导入受信任的证书。
  2. 在 Windows 受信任站点列表中设置 url。
  3. 更改 Chrome 中的标志以允许不安全的本地主机证书
  4. 将时间调整设置为自动
  5. 已清除 SSL 缓存。
  6. 每次更改后,我都会使用 chrome://restart 重新启动 chrome

我必须创建新证书吗?我已经安装了适用于 Windows 的 OpenSSL,但我不确定(如果需要)如何继续,因为 Ampps 已经创建了证书。

windows apache google-chrome ssl-certificate ampps

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

Yii2.表格获取输入ID

我正在尝试使用字段的ID以便在js中使用它.我已经阅读了Yii2文档,发现ActiveField有一个方法"getInputId",但我怎么称呼它?

<?php $form = ActiveForm::begin(); ?>
        <?= $form->field($model, 'name')->textInput(['maxlength' => true]) ?>
<?php $form->end(); ?>
Run Code Online (Sandbox Code Playgroud)

我可以在var中保存$ form->字段的结果,但它是一个字符串,因此无法以这种方式使用它.

我一直在检查ActiveForm代码,我发现它存在2个方法:beginField和endField,也许这么做呢?任何想法将不胜感激.

php yii2 active-form

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

Flutter 中的本地化字符串

我正在构建一个演示应用程序来使用本地化字符串进行测试。我收到以下错误:

I/flutter (21588):在构建 MainApp(dirty) 时抛出了以下 NoSuchMethodError:I/flutter (21588):getter 'title' 在 null 上被调用。I/flutter (21588):接收者:null I/flutter (21588):尝试调用:title

我不确定为什么会收到此错误。我遵循了颤振文档上的指示。

我有以下本地化类:

import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'dart:async';
import 'package:bet_master/l10n/messages_all.dart';

class AppLocalizations {
  static Future<AppLocalizations> load(Locale locale) {
    final String name =
        locale.countryCode.isEmpty ? locale.languageCode : locale.toString();
    final localeName = Intl.canonicalizedLocale(name);

    return initializeMessages(localeName).then((bool _) {
      Intl.defaultLocale = localeName;
      return AppLocalizations();
    });
  }
  static AppLocalizations of(BuildContext context) {
    return Localizations.of<AppLocalizations>(context, AppLocalizations);
  }

  String get title {
    return Intl.message(
      'Bet Master',
      name: 'title',
      desc: 'App Title'
    );
  } …
Run Code Online (Sandbox Code Playgroud)

localization widget flutter

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

环回 4:多对多关系

我正在尝试实现一种方法来过滤具有多对多关系的表中的数据。

我有以下表格 job、job_category 和 category。

到目前为止,我正在考虑使用 job_id 对 job_category 进行查询,然后使用该结果使用 IN() 添加条件,但我也找不到任何方法来实现此选项。

问题:

  1. 如何在 Loopback 4 中实现多对多关系?

  2. 如何使用 IN 过滤查询?

PD 我可以将 $inq 用于问题 2。

filter.where = {
   ...filter.where,
   id: {inq: [2, 7]},
};
Run Code Online (Sandbox Code Playgroud)

loopback v4l2loopback

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

为何像推车这样的解决方案声称是"实时"?

我一直在使用Pusher一段时间了.我总是认为"实时"意味着"瞬间".最近我进入了这篇文章:https://en.wikipedia.org/wiki/Real-time_computing,一句话引起了我的注意:

"实时程序必须保证在指定的时间限制内响应"

他们举了一个基于音频处理的例子:

"考虑一个音频DSP示例;如果一个过程需要2.01秒来分析,合成或处理2.00秒的声音,那么它不是实时的.但是,如果它需要1.99秒,它是或者可以变为真实的时间DSP过程."

我的问题:1.此定义仅适用于硬件/电子设备或也可应用于软件?2.如果适用于软件,它是否适用于像Pusher这样的远程服务?3.推动者被视为"实时"的时间限制是什么?4. WebRTC,Firebase等其他服务的时间限制是什么?

real-time pusher webrtc

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

Yii2-在操作之前返回响应

我正在构建一个测试API。我创建了一个从yii \ rest \ Controller扩展的Controller Page。动作需要发送响应。

要访问此控制器中的操作,需要发布service_id值。如果存在,我需要评估该service_id是否存在,是否处于活动状态并且属于已登录的用户。如果验证失败,则需要发送响应。

我正在尝试使用beforeAction()来执行此操作,但是问题是返回数据用于验证操作是否应该继续。

因此,我的临时解决方案是将服务对象保存在Class属性中,以便在操作中评估它并返回响应。

class PageController extends Controller
{

    public $service;

    public function beforeAction($action)
    {
        parent::beforeAction($action);

        if (Yii::$app->request->isPost) {

            $data = Yii::$app->request->post();
            $userAccess = new UserAccess();
            $userAccess->load($data);

            $service = $userAccess->getService();
            $this->service = $service;
        }

        return true;
    }

    public function actionConnect()
    {

        $response = null;

        if (empty($this->service)) {
            $response['code'] = 'ERROR';
            $response['message'] = 'Service does not exist';

            return $response;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我可能有20个需要进行此验证的操作,有没有办法从beforeAction方法返回响应以避免重复代码?

php yii2 yii-rest

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

Yii2:为所有表单字段配置全局模板

我有这个:

<?php

use app\models\Location;
use yii\helpers\Html;
use yii\widgets\ActiveForm;
use yii\helpers\ArrayHelper;
use app\models\Role;
?>

        <?php $form = ActiveForm::begin(); ?>

        <div class="row">
            <div class="col-sm-6">
                <?= $form->field($model, 'roleId', Yii::$app->formtemplate->fieldTemplate())->dropDownList(ArrayHelper::map(Role::find()->all(), 'id', 'name'), array('prompt' => '-- Select a role --', 'class' => 'form-control select2')); ?>
            </div>
            <div class="col-sm-6">
                <?= $form->field($model, 'published')->checkbox(['label' => ''], true)->label($model->getAttributeLabel('published'), ['class' => 'form-label semibold']); ?>
            </div>
        </div>
Run Code Online (Sandbox Code Playgroud)

我认为这是低效的,因为我必须将模板添加到每个字段(我知道我可以为每个表单添加它,但是复选框有一个不同的,任何想法如何为所有表单全局设置它?不仅仅是一个表单?

到目前为止我所做的是创建一个名为FormTemplate的组件,以避免直接在视图中编写模板,这很好,但我想全局设置它。

<?php

namespace app\components;

use Yii;
use yii\base\Component;

class FormTemplate extends Component {


    public function fieldTemplate($option = []) {

        $template = [
            'template' …
Run Code Online (Sandbox Code Playgroud)

php yii yii2

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

Typescript:动态设置变量类型

我有两个变量:

let locals 
let visitants
Run Code Online (Sandbox Code Playgroud)

它们中的每一个都可以是PlayerDto或类型TeamDto。类型将取决于名为 的第三个变量competitor_type。如果competitor_typeplayer,那么我需要将玩家列表分配给localsvisitants,其他方式分配给团队列表。

我正在使用“任何”解决它

locals: any
teams: any
Run Code Online (Sandbox Code Playgroud)

有更好的方法解决吗?

javascript typescript

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