在Drupal 8中获取用户的上次访问时间戳值

时间:2016-03-02 14:53:10

标签: drupal drupal-8

我试图在用户登录时显示上次访问的字段。为此,我尝试使用User :: getLastLoginTime()。但这会返回一个致命的错误

PHP致命错误:在/var/www/html/core/modules/user/src/Entity/User.php上调用未定义的方法Drupal \ customize_block \ Plugin \ Block \ ContractDetails :: get()第265行

这是我的块,在我的自定义模块中:

/**
 * Provides a 'Customized contract' Block
 *
 * @Block(
 *   id = "customer_info",
 *   label = @Translation("Customer and contract info"),
 *   module = "user",
 *   context = {
 *     "current_user" = @ContextDefinition("entity:user", label = @Translation("Current User"))
 *   }
 * )
namespace Drupal\customize_block\Plugin\Block;

use Drupal\Core\Block\BlockBase;

class ContractInfo extends BlockBase {
 public function build() {
 $output='';
 global $base_url;
 $current_user = $this->getContext('current_user');
 $output.='<div>' . $current_user -> contextData . '</div>';

     return array(
      '#markup' => $output,
      '#cache' => array(
     'contexts' => array('url'),
      ),
    );
  }
}

我是否正确地称这种方法?

1 个答案:

答案 0 :(得分:0)

不,你没有。您需要一些特定用户,例如当前用户或其他一些用户对象。要为当前用户执行此操作,它看起来像这样:

\Drupal::currentUser()->getLastAccessedTime();