次のようなカスタムブロックを作成しました。
_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
);
}
}
_
プログラムでURLからパラメーターを取得したいと思います。
例えば:
URLが_http://localhost/drup/hello/5569
_の場合、モジュール内の値_5569
_を取得したい。
arg(1)
とdrupal_get_query_parameters()
を試しましたが、次のエラーメッセージが表示されました。
_Call to undefined function `Drupal\hello\Plugin\Block\arg()`
_
そして
_Call to undefined function `Drupal\hello\Plugin\Block\drupal_get_query_parameters()`
_
パラメータを取得するにはどうすればよいですか?
以前はURLからパラメーター値を取得していました(localhost/check/myform?mob = 89886665)
$param = \Drupal::request()->query->all();
そして私の選択クエリに適用されました
$query = \Drupal::database()->select('profile_register', 'p1');
$query->fields('p1');
$query->condition('p1.mobileno', $edituseprof);
$query->condition('publishstatus', 'no');
$result = $query->execute()->fetchAll();
しかし、複数のパラメータ値で、私は今成功しています(Ex: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();
使用する \Drupal\Core\Routing;
:
$parameters = \Drupal::routeMatch()->getParameters();
名前付きパラメーターは、
$value = \Drupal::routeMatch()->getParameter('slug_name_from_route');
「slug_name_from_router」はrouting.ymlパスプロパティから取得されます
パス: '/ your/path/{slug_name_from_route}'
pcasting なしのrawパラメータが必要な場合は、
$value = \Drupal::routeMatch()->getRawParameter('slug_name_from_route');
arg()はdrupal 8で廃止予定ですが、arg()関数のように値を取得できますdrupal 7&6
$path = \Drupal::request()->getpathInfo();
$arg = explode('/',$path);
print_r($arg); exit();
出力は、basepathまたは(baseurl)を除くurlのパラメーターになります。
Array
(
[0] =>
[1] => node
[2] => add
)
$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'
Arg(1)として{node}を使用しました。 *-> getParameter( 'node');を使用してアクセスできます。
これがうまくいくことを願っています。
URLからクエリパラメータを取得するには、以下を使用できます。たとえば、URLがある場合、
domainname.com/page?uid=123&num=452
URLから"uid"を取得するには、..を使用します。
$uid = \Drupal::request()->query->get('uid');
URLから"num"を取得するには、..を使用します。
$num = \Drupal::request()->query->get('num');
あなたのURLがこのような例の場合
http://localhost/drupal/node/6666
次に、完全なURLパスを取得する必要があります
$current_path = \Drupal::request()->getPathInfo();
次に、パスを分解して引数の配列を取得します。
$path_args = explode('/', $current_path);
Idが値を含む、以下のようなURLのキーによって値が渡された場合の別の例
http://localhost/drupal?id=123
与えられたdrupalリクエストによってIDを取得できます
$id = \Drupal::request()->query->get('id');
これは、URLパラメータにアクセスしてTWIGテンプレートに渡す例です。すでにモジュールと必要なファイルを作成しており、 "/ test?fn = admin"があなたのURLであると想定しています。
.moduleファイルでhook_themeを実装し、変数とテンプレート名を定義します(テンプレートファイルを作成するときは、「_」を「-」に置き換えてください)
function my_module_theme () {
return [
'your_template_name' => [
'variables' => [
'first_name' => NULL,
],
];
}
次に、コントローラーを作成し、その下にコードを挿入します。
namespace Drupal\my_module\Controller;
use Drupal\Core\Controller\ControllerBase;
use Symfony\Component\HttpFoundation\Request;
class MyModule extends ControllerBase {
public function content(Request $request) {
return [
'#theme' => 'my_template',
'#first_name' => $request->query->get('fn'), //This is because the parameters are in $_GET, if you are accessing from $_POST then use "request" instead "query"
];
}
}
TWIGファイルで、「my-template.html.twig」である必要があります。
<h3>First Name: {{ first_name }}</h3>
そして、それは終わりました。お役に立てれば。