Silex基本表单提交

时间:2013-04-11 18:16:28

标签: php forms frameworks routing silex

我正在尝试向我的网站添加支付网关。我在Silex框架的基本实现方面遇到了很多麻烦。永远找不到app.php页面。事实上,我目前正在使用测试服务器,而signup.php页面位于以下目录中:

http://localhost/www/smafo/signup.php

提交表单最终会导致以下网址http://localhost/create_transaction,从而导致找不到网页错误。

注意:将表单的操作属性更改为app.php,路由到正确的app.php页面并导致找不到Symfony页面错误。

我在这里做错了什么想法?

这是示例表单:signup.php

<form action="/create_transaction" method="POST" id="braintree-payment-form">
     <p>
       <label>Card Number</label>
       <input type="text" size="20" autocomplete="off" data-encrypted-name="number" />
     </p>
     <p>
       <label>CVV</label>
       <input type="text" size="4" autocomplete="off" data-encrypted-name="cvv" />
     </p>
     <p>
      <label>Expiration (MM/YYYY)</label>
      <input type="text" size="2" data-encrypted-name="month" /> / <input type="text" size="4" data-encrypted-name="year" />
    </p>
    <input type="submit" id="submit" />
 </form>

这是我的app.php(与signup.php在同一目录中)

$app = new Silex\Application();

$app->get('/', function () {
    include 'signup.php';
    return '';
});

$app->post('/create_transaction', function (Request $request) {
  echo 'YES';
  $result = Braintree_Transaction::sale(array(
    'amount' => '1000.00',
    'creditCard' => array(
      'number' => $request->get('number'),
      'cvv' => $request->get('cvv'),
      'expirationMonth' => $request->get('month'),
      'expirationYear' => $request->get('year')
    ),
    'options' => array(
      'submitForSettlement' => true
    )
  ));

  if ($result->success) {
    return new Response("<h1>Success! Transaction ID: " . $result->transaction->id . "</h1>", 200);
  } else {
    return new Response("<h1>Error: " . $result->message . "</h1>", 200);
  }
});

$app->run();

我非常感谢任何建议。

非常感谢提前!

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,并最终通过进行以下替换来解决问题:

<form action="app.php/create_transaction" method="POST" id="braintree-payment-form">