【发布时间】:2015-01-23 00:15:55
【问题描述】:
我在 Symfony2 中有一个表单,用户在其中提交信用卡信息。表单最初呈现完美,但在提交时,我收到错误"An exception occured in driver: SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: NO)".
我的控制器动作代码:
<?php
/**
* Class: PaymentController
*
* This controller is used to serve an iframe that contains a form for
* a person's credit card information.
*
* @see Controller
*/
class PaymentController extends Controller
{
/**
* indexAction
*
* Display a form for a user to enter their credit card information
*
* @param Request $request
*/
public function subscribeAction(Request $request)
{
$ccForm = new CreditCard();
$form = $this->createForm(new CreditCardType(), $ccForm);
//This function attempts to connect to DB on form submission
$form->handleRequest($request);
//Never gets here
if ($form->isValid()) {
}
//render view here (this part works fine)
}
}
我的问题是为什么$form->handleRequest($request) 会尝试连接到数据库?从堆栈跟踪来看,Validator 类似乎调用了 Doctrine ORM,并且它正在尝试连接到那里的数据库。我不希望它这样做,我只想将数据保存在内存中并使用它进行一些 API 调用。
我的实体类上没有元数据,这表明 Doctrine 应该尝试将其保存到数据库中。有什么想法吗?
编辑:
如果我从app/config/config.yml 中删除学说配置,如下所示,那么我可以在$form-isValid() 之后完美访问我的表单对象
# Doctrine Configuration
#doctrine:
# dbal:
# driver: "%database_driver%"
# host: "%database_host%"
# port: "%database_port%"
# dbname: "%database_name%"
# user: "%database_user%"
# password: "%database_password%"
# charset: UTF8
# # if using pdo_sqlite as your database driver:
# # 1. add the path in parameters.yml
# # e.g. database_path: "%kernel.root_dir%/data/data.db3"
# # 2. Uncomment database_path in parameters.yml.dist
# # 3. Uncomment next line:
# # path: "%database_path%"
#
# orm:
# auto_generate_proxy_classes: false
# auto_mapping: false
【问题讨论】:
标签: php forms symfony doctrine