获取自定义模块中的URL参数

zie*_*456 4 php drupal drupal-8

我已经创建了一个这样的自定义块:

class HelloBlock extends BlockBase implements BlockPluginInterface{

  /**
   * {@inheritdoc}
   */
  public function build() {
    $config = $this->getConfiguration();
    $result = db_query('SELECT * FROM {test}');
    return array(
      '#theme' => 'world',
      '#test' => $result
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

我现在想以编程方式从URL获取一些参数.

例如:

如果URL是http://localhost/drup/hello/5569我想要获取5569我的模块内的值.

我试过arg(1),drupal_get_query_parameters()但我收到此错误消息:

Call to undefined function `Drupal\hello\Plugin\Block\arg()`
Run Code Online (Sandbox Code Playgroud)

和

Call to undefined function `Drupal\hello\Plugin\Block\drupal_get_query_parameters()`
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得参数?

B.l*_*man 10

我曾经从URL获取参数值(localhost/check/myform?mob = 89886665)

$param = \Drupal::request()->query->all();
Run Code Online (Sandbox Code Playgroud)

并在我的选择查询中应用

 $query = \Drupal::database()->select('profile_register', 'p1');
 $query->fields('p1');
 $query->condition('p1.mobileno', $edituseprof);
 $query->condition('publishstatus', 'no');
 $result = $query->execute()->fetchAll();
Run Code Online (Sandbox Code Playgroud)

但是在多个参数值上,我现在成功了(例如: http ://10.163.14.41/multisite/check/myform?mob=89886665& id=1 )

 $query = \Drupal::database()->select('profile_register', 'p1');
 $query->fields('p1');
 $query->condition('p1.mobileno', $edituseprof['mob']);
 $query->condition('p1.ids', $edituseprof['id']);
 $query->condition('publishstatus', 'no');
 $result = $query->execute()->fetchAll();
Run Code Online (Sandbox Code Playgroud)


小智 8

用途\Drupal\Core\Routing;:

$parameters = \Drupal::routeMatch()->getParameters();
Run Code Online (Sandbox Code Playgroud)


Kar*_*gam 6

在drupal 8中不推荐使用arg(),但是我们可以像在drupal 7和6中获得arg()函数一样的值

$path = \Drupal::request()->getpathInfo();
$arg  = explode('/',$path);
print_r($arg); exit(); 
Run Code Online (Sandbox Code Playgroud)

输出将是url中除basepath或(baseurl)以外的参数,

Array
(
   [0] => 
   [1] => node
   [2] => add
)
Run Code Online (Sandbox Code Playgroud)


Tan*_*mad 6

要从 url 获取查询参数,您可以使用以下命令。例如,如果您有网址,

domainname.com/page?uid=123&num=452
Run Code Online (Sandbox Code Playgroud)

要从url获取“uid” ,请使用..

$uid = \Drupal::request()->query->get('uid');
Run Code Online (Sandbox Code Playgroud)

要从url获取“num” ,请使用..

$num = \Drupal::request()->query->get('num');
Run Code Online (Sandbox Code Playgroud)


Mon*_*oft 5

$route_match = \Drupal::service('current_route_match');
$abc = $route_match->getParameter('node'); //node is refrence to what you have written in you routing file i.e: 

in something.routing.yml
entity.node.somepath:
  path: '/some/{node}/path'
Run Code Online (Sandbox Code Playgroud)

我已使用 {node} 作为 arg(1)。我可以使用 *->getParameter('node'); 访问它

希望这会起作用。