web-dev-qa-db-ja.com

symfony2でリクエストパラメータを取得する方法

私はsymfonyにとても不慣れです。 Javaなどの他の言語では、値を取得するためにrequest.getParameter('parmeter name')を使用できます。

Symfony2を使ってできることに似たことはありますか?.
いくつかの例を見たことがありますが、私のために働くものはありません。ユーザー名ユーザー名のフォームフィールドがあるとします。フォームアクションでは、私はこのようなものを使おうとしました:

$request = $this->getRequest();
$username= $request->request->get('username'); 

私も試してみました

$username = $request->getParameter('username');

そして

$username=$request->request->getParameter('username');

しかし、どのオプションも機能していません。しかし、以下はうまくいきました:

foreach($request->request->all() as $req){
    print_r($req['username']);
}

getParameter()メソッドの使い方で間違ったところがあります。任意の助けをいただければ幸いです。

192
darhamid

命名はそれほど直感的ではありません。

use Symfony\Component\HttpFoundation\Request;

public function updateAction(Request $request)
{
    // $_GET parameters
    $request->query->get('name');

    // $_POST parameters
    $request->request->get('name');
399
Cerad

もっと簡単にします。

use Symfony\Component\HttpFoundation\Request;

public function updateAction(Request $request)
{
    $foo = $request->get('foo');
    $bar = $request->get('bar');
}

他の選択肢は、あなたのパラメータをあなたのアクション関数定義に導入することです:

use Symfony\Component\HttpFoundation\Request;

public function updateAction(Request $request, $foo, $bar)
{
    echo $foo;
    echo $bar;
}

これは、あなたがrouting.ymlファイルの中でURLパターンの一部として{foo}と{bar}を定義したと仮定します:

acme_myurl:
    pattern:  /acme/news/{foo}/{bar}
    defaults: { _controller: AcmeBundle:Default:getnews }
31
pkout

次のコードを使用してフォームフィールドの値を取得できます。

use Symfony\Component\HttpFoundation\Request;

public function updateAction(Request $request)
{
    // retrieve GET and POST variables respectively
    $request->query->get('foo');
    $request->request->get('bar', 'default value if bar does not exist');
}

またはを使用して、すべてのフォーム値を配列として取得することもできます。

$request->request->all()
16
ScoRpion

試してみる

$request->request->get('acme_demobundle_usertype')['username']

数式フィールドの属性名を調べます

12
MartinW.

コントローラ内部:

$request = $this->getRequest();
$username = $request->get('username');
9
Reinherd

あなたのオプション:

  1. 単純:
    • $request->request->get('param')$_POST['param'])または
    • $request->query->get('param')$_GET['param']
  2. Good Symfonyはすべてのバリデーション、値の変換、そしてエラーやその他多くの機能を備えたフォームレンダリングを備えています:
  3. その間の何か(下記の例を参照)
<?php
/**
 * @Route("/customers", name="customers")
 *
 * @param Request $request
 * @return Response
 */
public function index(Request $request)
{
    $optionsResolver = new OptionsResolver();
    $optionsResolver->setDefaults([
        'email' => '',
        'phone' => '',
    ]);
    $filter = $optionsResolver->resolve($request->query->all());

    /** @var CustomerRepository $customerRepository */
    $customerRepository = $this->getDoctrine()->getRepository('AppBundle:Customer');

    /** @var Customer[] $customers */
    $customers = $customerRepository->findFilteredCustomers($filter);

    return $this->render(':customers:index.html.twig', [
        'customers' => $customers,
        'filter' => $filter,
    ]);
}

OptionsResolverについての詳細 - http://symfony.com/doc/current/components/options_resolver.html

9
luchaninov

$this->getRequest()メソッドは推奨されなくなったので、Requestオブジェクトをコントローラのアクションに次のように挿入する必要があります。

public function someAction(Request $request)

その後は、次のいずれかを使用できます。

リクエストからPOSTデータを取得したい場合は、次のようにします。

$request->request->get('var_name');

しかし、リクエストからGETデータを取得したい場合はこれを使用してください。

$request->query->get('var_name');
8
Ashish Awasthi

これを行うことができます:

$clientName = $request->request->get('appbundle_client')['clientName'];

場合によっては、属性が保護されていると、一般的なアクセス方法の値を取得することができなくなります。

(役職)

 $clientName = $request->request->get('clientName');

(取得する)

$clientName = $request->query->get('clientName');

(一般)

$clientName = $request->get('clientName');
6
Yoander

クエリ文字列やフォームパラメータの取得などのほとんどの場合は、上記の回答で説明されています。

生のデータを扱うとき、json_decode()の引数として渡したい本体の生のJSON文字列のように、メソッド Request::getContent() を使うことができます。 。

$content = $request->getContent();

SymfonyのHTTPリクエストに関するその他の役に立つ情報は HttpFoundation パッケージのドキュメントにあります。

use Symfony\Component\HttpFoundation\Request;

public function indexAction(Request $request, $id) {

    $post = $request->request->all();

    $request->request->get('username');

}

ありがとう、あなたはまた上記のコードを使うことができます

1
Meet
$request = Request::createFromGlobals();
$getParameter = $request->get('getParameter');
1
Manuel M.

これを試してください、それは働きます

$this->request = $this->container->get('request_stack')->getCurrentRequest();

よろしく

0
AchrafSoltani
public function indexAction(Request $request)
{
   $data = $request->get('corresponding_arg');
   // this also works
   $data1 = $request->query->get('corresponding_arg1');
}
0
abhinand

Symfony 4ユーザーの場合:

$query = $request->query->get('query');
0
Smith

選択から値を取得する必要がある場合は、次のものを使用できます。

$form->get('nameSelect')->getClientData();
0
sncardonam