0

私は二つのフィールド 1と1つのモジュールを作成したZendのframwork 2Zend Framework 2 - フォームフィールドに値を保持する方法は?複数のレコードの更新?

に取り組んでいます)Test1を 2)は、このためにTest2

データベースの構造:

  1. DB名:zend_test_db
  2. dbフィールド:config_key、c​​onfig_value

私はconfig_key = test1keyとconfig_valueのように格納したい:テキストボックス は一度に値

複数のレコードストアを入力してください。以下

は私のコントローラ機能である:上記のコード

public function indexAction() 
    { 
     $form = new ConfigurationForm(); 
     $form->get('submit')->setValue('Save Settings'); 
     $form->get('test1key')->setValue('test1key'); 
     $form->get('test2key')->setValue('test2key'); 

$request = $this->getRequest(); 
     if ($request->isPost()) { 
      $configuration = new Configuration(); 
      $form->setInputFilter($configuration->getInputFilter()); 
      $form->setData($request->getPost()); 

      if ($form->isValid()) { 
       $configuration->exchangeArray($form->getData());  
       $this->getConfigurationTable()->saveConfiguration($configuration); 

       // Redirect to list of configuration 
       return $this->redirect()->toRoute('configuration'); 
      } 
     } 
     return array('form' => $form); 
    } 

追加フィールドで正常に動作します。これらのフィールドを挿入してキーと値として保存することができます

これを更新することはできません。

希望する

ここで私は間違いをしますか?

答えて

2

私は50未満の評判を持っているのでコメントできません。データをデータベースに挿入することはできますが、更新することはできないと言います。

これは、毎回新しいモデルを作成しているために起こります。

$configuration = new Configuration(); 

idパラメータを使用して初期化する必要があります。

$id = (int) $this->params()->fromRoute('id', 0); 
if (!$id) { 
     return $this->redirect()->toRoute('configuration', array(
       'action' => 'add' 
      )); 
} 


try { 
    $configuration = $this->getConfigurationTable()->getConfiguration($id); 
} 
    catch (\Exception $ex) { 
     return $this->redirect()->toRoute('configuration', array(
       'action' => 'index' 
     )); 
    } 

これを使用すると、データを更新することもできます。参考までにzend framework Albumモジュールをチェックすることができます。ここにリンクがあります https://framework.zend.com/manual/2.2/en/user-guide/forms-and-actions.html

これが問題でなかった場合は、私にこの件に関するお手伝いをさせてください。

+0

ありがとうございます:) –

+1

それを知ってうれしいです:) –

関連する問題