我正在编写一个小部件,我想避免用户在他们的模型中添加代码(我知道它会更容易但是用它来学习新的东西).
您是否知道是否可以向模型添加属性(不在数据库中,因此它将是虚拟的)并为该属性添加规则?您无权更改该型号代码.
我知道规则是一个数组.在过去,我使用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",所以我想避免这种情况.还有其他想法吗?如何在不扩展模型的情况下做到这一点?
我收到此错误:
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) 我正在使用 Ampps 在 Windows 10 上工作。我使用支持 SSL 的 Ampps Panel 创建了一个域 (tps.local)。我看到它创建了一个证书,但是当我在 Chrome 上工作时,我收到 Get ERR_SSL_SERVER_CERT_BAD_FORMAT 错误。
我努力了:
我必须创建新证书吗?我已经安装了适用于 Windows 的 OpenSSL,但我不确定(如果需要)如何继续,因为 Ampps 已经创建了证书。
我正在尝试使用字段的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,也许这么做呢?任何想法将不胜感激.
我正在构建一个演示应用程序来使用本地化字符串进行测试。我收到以下错误:
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) 我正在尝试实现一种方法来过滤具有多对多关系的表中的数据。
我有以下表格 job、job_category 和 category。
到目前为止,我正在考虑使用 job_id 对 job_category 进行查询,然后使用该结果使用 IN() 添加条件,但我也找不到任何方法来实现此选项。
问题:
如何在 Loopback 4 中实现多对多关系?
如何使用 IN 过滤查询?
PD 我可以将 $inq 用于问题 2。
filter.where = {
...filter.where,
id: {inq: [2, 7]},
};
Run Code Online (Sandbox Code Playgroud) 我一直在使用Pusher一段时间了.我总是认为"实时"意味着"瞬间".最近我进入了这篇文章:https://en.wikipedia.org/wiki/Real-time_computing,一句话引起了我的注意:
"实时程序必须保证在指定的时间限制内响应"
他们举了一个基于音频处理的例子:
"考虑一个音频DSP示例;如果一个过程需要2.01秒来分析,合成或处理2.00秒的声音,那么它不是实时的.但是,如果它需要1.99秒,它是或者可以变为真实的时间DSP过程."
我的问题:1.此定义仅适用于硬件/电子设备或也可应用于软件?2.如果适用于软件,它是否适用于像Pusher这样的远程服务?3.推动者被视为"实时"的时间限制是什么?4. WebRTC,Firebase等其他服务的时间限制是什么?
我正在构建一个测试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
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) 我有两个变量:
let locals
let visitants
Run Code Online (Sandbox Code Playgroud)
它们中的每一个都可以是PlayerDto或类型TeamDto。类型将取决于名为 的第三个变量competitor_type。如果competitor_type是player,那么我需要将玩家列表分配给locals和visitants,其他方式分配给团队列表。
我正在使用“任何”解决它
locals: any
teams: any
Run Code Online (Sandbox Code Playgroud)
有更好的方法解决吗?
php ×4
yii2 ×4
yii ×2
active-form ×1
ampps ×1
ansible ×1
ansible-2.x ×1
apache ×1
flutter ×1
javascript ×1
localization ×1
loopback ×1
pusher ×1
real-time ×1
typescript ×1
v4l2loopback ×1
webrtc ×1
widget ×1
windows ×1
yii-rest ×1