2013-11-11 3 views
0

когда я обновляю свою форму, я получил эту ошибку 500 | Внутренняя ошибка сервера | Doctrine_Connection_Mysql_ExceptionЯ получил эту ошибку 500 | Внутренняя ошибка сервера | Doctrine_Connection_Mysql_Exception

executeEdit

public function executeEdit(sfWebRequest $request) 
{ 
    $this->form = new ContactForm(); 

    $this->rs = Doctrine::getTable('login')-> find($request->getParameter('id')); 

    $id=$request->getParameter('id'); 
    $unm=$this->rs['username']; 
    $msg=$this->rs['message']; 
    $em=$this->rs['email']; 
    $sub=$this->rs['subject']; 
    $this->form->setDefault('id', $id); 
    $this->form->setDefault('username', $unm); 
    $this->form->setDefault('message', $msg); 
    $this->form->setDefault('email', $em); 
    $this->form->setDefault('subject', $sub); 
    //$this->forward404Unless($this->rs); 


    if ($request->isMethod('post')) 
    { 
     $this->form->bind($request->getParameter('contact'), $request->getFiles('contact')); 

     if ($this->form->isValid()) 
     { 
      $name="'".$this->form->getValue('username')."'"; 
      $message="'".$this->form->getValue('message')."'"; 
      $email="'".$this->form->getValue('email')."'"; 
      $sub="'".$this->form->getValue('subject')."'"; 
      $id=$this->form->getValue('id'); 

      $file = $this->form->getValue('doc'); 
      $filename = sha1($unm).'_'.sha1($file->getOriginalName()); 
      $extension = $file->getExtension($file->getOriginalExtension()); 
      $path=sfConfig::get('sf_upload_dir').'/'.$filename.$extension; 
      $qs= Doctrine_Query::create() 
       ->update('login l') 
       ->set('l.username', $name) 
       ->set('l.message', $message) 
       ->set('l.email', $email) 
       ->set('l.subject', $sub) 
       ->set('l.doc', $path) 
       ->where('l.id=?',$id) 
       ->execute(); 
       $this->redirect('user/show?id=' . $id); 
     } 
    } 
} 

это мой код изменить действие. так что ошибка exaccty. и какова моя ошибка и что я могу сделать, чтобы решить эту ошибку? , пожалуйста, помогите мне

+0

Возможный дубликат [ошибка в форме обновления, получена ошибка, например Doctrine \ _Connection \ _Mysql \ _Exception] (http://stackoverflow.com/questions/19900097/error-on-update-form-got-error-like- doctrine-connection-mysql-exception) – denys281

ответ

0

Почему вы добавляете кавычки к значениям, которые вы сохраняете? Доктрина справится с этим для вас. Попробуйте снять эту деталь:

$name="'".$this->form->getValue('username')."'"; 
$message="'".$this->form->getValue('message')."'"; 
$email="'".$this->form->getValue('email')."'"; 
$sub="'".$this->form->getValue('subject')."'"; 

Вы не используете силу Доктрины и формы полностью.

E.g. вместо этого:

$this->form = new ContactForm(); 

$this->rs = Doctrine::getTable('login')-> find($request->getParameter('id')); 

$id=$request->getParameter('id'); 
$unm=$this->rs['username']; 
$msg=$this->rs['message']; 
$em=$this->rs['email']; 
$sub=$this->rs['subject']; 
$this->form->setDefault('id', $id); 
$this->form->setDefault('username', $unm); 
$this->form->setDefault('message', $msg); 
$this->form->setDefault('email', $em); 
$this->form->setDefault('subject', $sub); 

Вы могли бы использовать это:

$this->rs = Doctrine_Core::getTable('login')-> find($request->getParameter('id')); 
$this->form = new ContactForm($this->rs); 

У вас есть только «подключить» свою форму к правильной модели, добавив эту функцию:

public function getModelName() 
{ 
    return 'login'; 
}  

Вы могли бы затем используйте метод save в форме, чтобы он автоматически сохранял ваш объект без необходимости создания запроса на обновление.

Также обратите внимание на sfValidatorFile, поскольку он автоматически создаст вам уникальное имя файла.

+0

спасибо, но получил эту ошибку .. 500 | Внутренняя ошибка сервера | Doctrine_Record_UnknownPropertyException Неизвестное свойство записи/связанный компонент «_csrf_token» на «login» – hemsbhardiya

+0

Добавьте '$ form-> renderHiddenFields()' в шаблон или '$ this-> disableLocalCSRFProtection()' в метод 'configure' вашего класса формы. (первое - намного лучшее решение). Также прочитайте Sf 1.4. документация о защите CSRF в формах. –

+0

ладно спасибо. :) – hemsbhardiya

Смежные вопросы