Из вашего вопроса не ясно, используете ли вы ORM или нет.
Вы говорите, что «я прекрасно могу хранить поля в базе данных», но я не уверен, как вы делаете это в настоящее время.
@ prodigitalson дал вам хорошее объяснение о том, как создать форму и получить эти поля для сохранения в вашей базе данных, но я хотел добавить, что вам нужна модель, чтобы это работало в первую очередь.
Если вы этого не сделаете, посмотрите на:
http://www.symfony -project.org / Jobeet / 1_4 / Propel / ен / 03
Прямой ответ на ваш вопрос: «Как мне хранить значения в базе данных с помощью Symfony?» это:
1) Определите схему для вашей модели (в schema.xml или schema.yml)
2) Сборка; который создаст ваши таблицы на основе вашей схемы. В случае с propel это ./symfony propel: build-all-load
3) Этот процесс сборки сгенерирует класс Form (который расширяет sfForm), о котором говорит prodigitalson.
4) Делайте то, что предлагали чудеса.
Подробнее об этом можно узнать здесь: http://www.symfony -project.org / forms / 1_4 / ru /
Вы также можете сделать это без использования sfForms. Ваше действие будет выглядеть примерно так:
(очень упрощенный пример):
public function executeSaveUser( sfWebRequest $request ){
$full_name = $request->getParameter( 'full_name', null );
$email_address = $request->getParameter( 'email_address', null );
// Validate your input here.. e.g. make sure email is valid etc.
// Create a new User
try{
$user = new User();
$user->setFullName( $full_name );
$user->setEmailAddress( $email_address ) ;
$user->save();
}catch( Exception $e ){
// handle error response here..
}
// Respond with JSON
if( !$request->isXmlHttpRequest() ){ // if this is an ajax call
$this->setLayout(false);
$this->getResponse()->setContentType('application/json');
$response = array( 'user_id' => $user->getId() );
$this->renderText( json_encode($response) );
return sfView::NONE;
} else {
return sfView::SUCCESS; // display your template
}
}
Надеюсь, это поможет.