【发布时间】:2016-10-07 23:38:45
【问题描述】:
我有一个自定义安装配置文件,它依赖于视图和其他自定义模块。一个这样的模块是一个管理内容模块,它有一个自定义视图来替换“内容”视图 (/admin/content)。
一般来说,我可以通过编程方式禁用内容视图。 (这是在我用 drush scr 调用的 drush 文件上)
$view = \Drupal::service('entity.manager')->getStorage('view')->load('content');
if (!is_null($view)) {
$view->setStatus(FALSE);
$view->save();
}
但是,如果该站点之前已安装,则此方法有效。如果我尝试在我的自定义配置文件的安装挂钩中运行它,则视图对象为空。
function my_profile_install() {
// Previous code here
}
视图为空,我无法禁用它。我仍然不太精通 Drupal 8 的内部工作原理,我正在研究代码并试图找出可能的原因,但到目前为止还没有运气。
我已确保在请求视图之前加载节点模块(这是定义标准内容视图的位置)和视图模块。它仍然返回空。
Drupal::moduleHandler()->load('node');
Drupal::moduleHandler()->load('views');
我也是这样做的
\Drupal::configFactory()
->getEditable('views.view.content')
->set('status', TRUE)
->save();
这“有效”。问题是这会破坏视图列表页面,但会出现异常。所以根本不是一个好的解决方法。
如果有人能指出我正确的方向,我将不胜感激。
提前致谢。
【问题讨论】:
标签: drupal drupal-views drupal-8