0

私の CakePHP アプリケーションには、通常 30 文字を超える変数を新しい Symfony2 アプリケーションに渡す HTML フォームがあります。変数をフォームから Symfony に問題なく渡すことができます。ただし、Symfony に渡された変数をエコーすると、変数には 30/40 文字シーケンスの最初の文字のみが含まれているようです。

変数は通常次のようになります。T2psbWFGWjNXbTRob3p0VGEwVENheVZvTVRSRFRVUnFLMDVmYVhnaU5ucFJNVWgzZVZSUlRXOXI=

CakePHP で使用される HTML フォームは次のようなものです。

<form id="TestForm" method="POST" action="/web/app_dev.php/instructors/passport/" name="input">
<input type="text" value="UkVsS1JtMW1VRFZvT21raU1HVXJVQ3RaTVRSS2JVd3JWRjVxVEdnbVZEUkZiakZsV2pjemNVWTM=" name="value">
<input type="submit" value="Go to the New Database">
</form>

Symfony2 のコードは次のようになります。

public function passportAction(Request $request)
{
    $passport = $this->getRequest()->get("value");

    // Get variables from the search form
    $value = $passport['value'];

    $session = new Session();
    $session->start();

    $session->set('passport', $value);
    $sessionval = $session->get('passport');

    print_r($sessionval);

    return $this->render('DatabaseBundle:Default:test.html.twig', array(
        'pagename' => 'Database Does Not Exist',
        'branchname' => 'Test Branch',
        'group' => '0',
        'something' => $sessionval
    ));
}

このコードとその変数を使用すると、Symfony2 で変数がエコーされたときに表示されるのは だけですT。何が起こっている?

4

2 に答える 2

1

あなたのバグは、あなたが書いたときの事実から来ています:

$passport = $this->getRequest()->get("value");

$passport には既に変数が文字列として含まれていますが、文字列は文字の疑似配列にすぎません。次に、コードの後半で、文字列全体から 1 つの文字にアクセスしようとしていると見なされるため、文字列で$passport['value']使用することを php が気にすることはありません。[]最後に、おそらく最もトリッキーな部分で、説明が間違っている可能性があります。keyが指す値にアクセスしようとしていますが'value'、実際には'value' key は存在しませんが、ここで php によってキャストが行われ、 value として解決されると思います0

于 2013-07-30T10:06:59.730 に答える
0

これを試してください $this->getRequest()->get("TestForm")['value']

于 2013-07-30T10:09:46.917 に答える