我知道在堆栈溢出中有很多类似的错误,但是没有一个能解决我的问题。我在high_contrast.module文件中有一个函数:
function high_contrast_install() {
$background = \Drupal::config('high_contrast.settings')->get('colors_background');
$text = \Drupal::config('high_contrast.settings')->get('colors_text');
$hyperlinks = \Drupal::config('high_contrast.settings')->get('colors_hyperlinks');
\Drupal::service('file_system')->prepareDirectory(HIGH_CONTRAST_CSS_FOLDER, FileSystemInterface::CREATE_DIRECTORY); // LINE 17!!!
$css = _high_contrast_build_css();
file_save_data($css, HIGH_CONTRAST_CSS_LOCATION, FileSystemInterface::EXISTS_REPLACE);
}当我想要安装这个模块时,我有错误:
Error: Cannot pass parameter 1 by reference in high_contrast_install() (line 17 of modules\high_contrast\high_contrast.install).我怎样才能修好它呢?
第17行是:
\Drupal::service('file_system')->prepareDirectory(HIGH_CONTRAST_CSS_FOLDER, FileSystemInterface::CREATE_DIRECTORY);发布于 2019-11-12 21:33:54
正如错误提示的那样,FileSystem::prepareDirectory引用了它的第一个参数:
public function prepareDirectory(&$directory, $options = self::MODIFY_PERMISSIONS) {
# $directory being assigned new value
}因此,如果您传递一个常量,PHP会抛出一个错误:
常量是简单值的标识符(名称)。顾名思义,在脚本执行过程中,该值不能更改。
在函数调用之前,需要将常量值赋值给变量:
$dir = HIGH_CONTRAST_CSS_FOLDER;
\Drupal::service('file_system')->prepareDirectory($dir, FileSystemInterface::CREATE_DIRECTORY);https://stackoverflow.com/questions/58813354
复制相似问题