小编Mar*_*tin的帖子

可访问性:`tabindex =“-1”`是否意味着该元素对屏幕阅读器不可见(类似于`aria-hidden =“true”`)

我有一个网页,其中对话框<section role="dialog">元素在内容顶部打开,导致下面的元素/内容无法访问。

当对话框打开时,下面的所有内容都会接收tabindex="-1"以将选项卡焦点保持在对话框内。

下面的内容还接收一个 CSS 类,该类会模糊元素,并设置pointer-events为 none,因此元素无法用鼠标单击,但这些元素仍然全部存在并在 DOM 中可见(它们未设置为display: none)。

两个问题:

  1. 我还需要添加aria-hidden="true"所有这些元素吗?
    • 我知道内容将不再可以通过 Tab 键聚焦,但我不确定屏幕阅读器是否仍会尝试阅读内容。
  2. 如果我设置aria-hidden="true"这些元素,然后恢复到aria-hidden="false",屏幕阅读器会发现发生了此更改吗?
    • 我担心设置aria-hidden="true"意味着屏幕阅读器不会再次考虑该元素,即使我稍后将其设置为aria-hidden="false".
    • 我是否需要aria-live共享父元素(对话框和内容都存在)?
    • 即使使用aria-live,屏幕阅读器会考虑之前设置的元素aria-hidden="true"吗?

注意:该对话框是一个带有提交按钮的表单。有时它可能包含一个Dismiss按钮,但并非在所有情况下都如此。该对话框可以充当需要提交表单才能继续的大门。

html javascript accessibility screen-readers

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

Laravel 验证:仅允许已知的属性/属性,否则验证失败

我们正在构建一个需要精度的 API 端点。我们希望对 POST/PUT 到服务器的参数强制执行严格的验证。

如果 api 用户发送了一key=value对不受支持的参数(例如,我们允许参数 [first_name, last_name],并且用户包含不受支持的参数 [country]),我们希望验证失败。

已尝试构建一个名为allowed_attributes(用作allowed_attributes:attr1,attr2,...)的自定义验证器,但为了使其可以在$validationRules数组中使用,它必须应用于嵌套/子属性列表的父级(...因为否则我们的自定义验证器没有访问正在验证的属性)。

Validator::extend('allowed_attributes', 'App\Validators\AllowedAttributesValidator@validate');
Run Code Online (Sandbox Code Playgroud)

这给其他验证器带来了问题,然后我们必须预测这个父/子结构及其周围的代码,包括错误键和错误消息字符串的额外验证后清理。

tl;dr:非常脏,不是一个干净的实现。

$validationRules = [
  'parent' => 'allowed_attributes:first_name,last_name',
  'parent.first_name' => 'required|string|max:40',
  'parent.last_name' => 'required|string|max:40'
];

$isValid = Validator::make(['parent' => $request], $validationRules);

var_dump("Validation results: " . ($isValid ? "passed" : "failed"));
Run Code Online (Sandbox Code Playgroud)

关于如何在 Laravel 中更干净地完成此操作,而不需要使用父/子关系来访问所有 $request 属性的列表(在自定义验证器内),有什么想法/建议吗?

php validation laravel

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

禁用 debug.log 中的 WordPress“PHP 已弃用:”消息

我已经搜索并尝试了解决这个问题的各种解决方案,但没有一个有效。

看起来 WordPress 忽略了以下内容并记录了已弃用的消息:

error_reporting(E_ALL ^ E_DEPRECATED);
ini_set('error_reporting', E_ALL ^ E_DEPRECATED);
Run Code Online (Sandbox Code Playgroud)

我的php.ini

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
Run Code Online (Sandbox Code Playgroud)

我的wp-config.php

<?php
define( 'WP_CACHE', true );
error_reporting(E_ALL ^ E_DEPRECATED);

...

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Run Code Online (Sandbox Code Playgroud)

插件正在向我的debug.log文件发送PHP Deprecated: ...日志消息。每天生成数GB。使debug.log无法使用。

我向插件开发人员报告,但有些插件没有及时修复。我无法自行修复,因为插件更新会覆盖我的更改。

禁用这些的解决方案是什么?

服务器:

  • 在 AWS Lightsail (2GB 2vcpu) 上运行 Bitnami/Wordpress
  • Linux 5.10.0-25-云-amd64 x86_64
  • PHP 版本8.2.10

wordpress

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