1

I'd like a block plugin to display content dependent on a GET request. Inside my block plugin I have

class BlogPage extends BlockBase { public function build() { $query = \Drupal::entityQuery('node') ->condition('type', 'blog_post') ->sort('created', 'DESC') ->range(0, $range); return $query; } } 

I'd like to make $range retrieve info from a GET request. For example I'd like 127.0.0.1/page?range=5 to make $range = 5. I've tried

$range = Request::get('range'); 

But that does not work. Is there a way to return the values in a GET request from inside the block plugin?

1 Answer 1

4

You need to get the current request object first:

$request = \Drupal::request(); $range = $request->get('range'); 

Or

$range = \Drupal::request()->get('range'); 
5
  • and it'll need a cache flush ;) drush cr or manually via admin/config/development/performance Commented Jul 15, 2016 at 21:15
  • If you setup your cache tags right it shouldn't need to rebuild caches. A rebuild isn't going to be all that useful anyway since build() will not be called most of the time if the cache is still considered valid. Commented Jul 16, 2016 at 16:30
  • Whenever I attempt this I get Fatal error: Class 'Drupal\mymodule\Plugin\Block\Drupal' not found in /Library/WebServer/Documents/aaep/web/modules/custom/mymodule/src/Plugin/Block/MyPlugin.php on line 46 Commented Oct 14, 2016 at 15:15
  • 2
    Turns out I needed a \ before the Drupal::request(); Commented Oct 14, 2016 at 15:18
  • I added that to the example since that's true in most contexts. Commented Oct 14, 2016 at 15:37

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.