drupal - Drupal 7,hook_file_presave 显示错误信息并停止上传文件
问题描述
我是 drupal 7 的新手,我正在尝试创建 hook_file_presave / hook_file_validate / hook_field_validate 函数,用于检查在站点上传的 pdf 文件是否不受密码保护。
如果文件受密码保护,我可以使用 php 轻松检查。但是当我显示错误消息时,它只显示错误消息也上传文件。我想我没有使用正确的钩子。
function simpletest_file_presave($destination){
// here is my logic
drupal_set_message(t('file is encrypted >>>>>>>> '. $filename), 'error');
return;
}
解决方案
自从我接触 Drupal 已经有一段时间了,但我首先想到了hook_file_validate()。
但是正如这里所解释的,您可以实现hook_form_FORM_ID_alter()
以添加自己的文件上传验证器,然后返回要显示的错误数组。
重要提示:当您使用该t()
功能翻译您的消息时,不要将文件名附加到您的字符串,因为这将创建多个翻译字符串,每个上传文件一个,因此永远不会翻译,因为它总是会有所不同。为避免这种情况,请使用占位符并将文件名作为字符串参数传递,如下所示:
$error_message = t(
'The file "@filename" is encrypted! Please upload a PDF without password protection.',
['@filename' => $filename_without_path]
);
推荐阅读
- firebase - 带参数的 Firebase 动态链接
- reactjs - 在 material-ui DatePicker 上显示标题
- java - 使用 IntSummaryStatistics 跨多个字段求平均值
- django - Django ORM:使用链接表连接两个表
- alfresco - 在此服务器上找不到 Alfresco 存储库。此应用程序是否具有跨上下文权限?)
- ios - iOS 13 Silent Push 通知方法没有被调用 application:, didReceiveRemoteNotification userInfo:, fetchCompletionHandler
- r - 如何在 R 中标准化日期时间格式
- python - 标量变量的索引无效。如何解决这个问题?
- python - 创建两个不同的数据框,一个通过选择每第 n 行,另一个使用 Python 中的剩余数据?
- reactjs - 已选择要删除的产品 ID,但产品数据仍在 Firebase 上