0

フォームの読み込み時に次のエラーが発生します。

「フリップブック」の不明なレコード プロパティ/関連コンポーネント「タイトル」

事は...私は「タイトル」がどこから来ているのか分かりません。career_titleスキーマとデータベースのように設定しました。モデルが構築され、基本クラスが正しい。

これが私の行動です:

 public function executeEdit(sfWebRequest $request)
  {
      if (get_class($this->getRoute()) == 'sfDoctrineRoute') {
        /* edit action */
        $flipbook = $this->getRoute()->getObject();     
      }
      else {
        /* add action */
        $flipbook = new Flipbook();
      }

      $this->form = new FlipbookForm($flipbook);

      if ($request->isMethod('post')) {
        $this->form->bind($request->getParameter('flipbook'));
        if ($this->form->isValid()) {           
            $this->form->save();
            $this->getUser()->setFlash('message_success', 'Flipbook saved');
            return $this->redirect('@flipbook_edit?id=' . 
                    $this->form->getObject()->get('id') . 
                    ($request->getParameter('preview') ? '&preview=1' : ''));       
                }
              }
          }

$flipbookから変数 を削除すると$this->form = new FlipbookForm($flipbook);、正常にレンダリングされたフォームが得られますが、入力フィールドを再設定するにはオブジェクト データが必要です。

オブジェクトの「タイトル」を見つける理由がわかりません。私はそれをどこにも参照していません(私は思いません)。何か案は?タイプミス?提案?

さらにコードを提供する必要がある場合はお知らせください。

追加されたクラスのyml スキーマは次のとおりです。

     Generic:
          actAs: [ Timestampable ]
          columns:
            updated_by: { type: integer }
            created_by: { type: integer }
            published: { type: boolean, default: 0 }
          relations:
            creator:
              class: sfGuardUser
              foreignAlias: created_users
              local: created_by
              onDelete: "SET NULL"
            last_updater:
              class: sfGuardUser
              foreignAlias: updated_users
              local: updated_by
              onDelete: "SET NULL"

            flipbook:
              url:  /flipbook
              param: { module:

    Flipbook:
      tableName: flipbook
      inheritance:
        extends: Generic
        type: concrete
      columns:
        career_title: { type: string(255) }
        career_associations: { type: clob }
        skills: { type: string(255) }
        skills_associations: { type: clob }
        program: { type: string(255) }
        program_associations: { type: clob }
        draft_id: { type: integer(10) }

最後に、必要に応じてテンプレートを作成します。

<?php echo $form->renderFormTag(url_for($form->getObject()->isNew() ? '@flipbook_add' : ('@flipbook_edit?id=' . $form->getObject()->get('id'))), array('method' => 'post', 'id' => 'edit_form', 'name' => 'edit_form', 'class' => 'generic_form job_form')) ?>
  <?php echo $form['id'] ?>
  <div class="content-box">
    <div class="box-body">
      <div class="box-header clear">
        <h2>Flipbook</h2>
      </div>
      <div class="box-wrap clear"  style="display: block;">
        <?php echo $form ?>
      </div><!-- end of box-wrap -->
    </div> <!-- end of box-body -->
  </div>

  <div class="buttons_row right main_actions">
    <?php include_partial('global/apply_changes_button', array('form' => $form)) ?>
    <?php include_partial('global/publish_button', array('form' => $form)) ?>
  </div>
</form>

<?php include_partial('global/preview', array('form' => $form)) ?>

ルーティング:

 flipbook, action: index }
    flipbook_add:
      url:   /flipbook/add
      param: { module: flipbook, action: edit }
    flipbook_edit:
      url:   /flipbook/edit/:id
      param: { module: flipbook, action: edit }
      param: { module: flipbook, action: edit }
      class: sfDoctrineRoute
      options: { model: Flipbook, type: object }
      requirements:
        id: \d+
        sf_method: [get, post]

スタックトレース:

stack trace at () in SF_ROOT_DIR/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Filter/Standard.php line 55 ...

    public function filterGet(Doctrine_Record $record, $name)
    {
      throw new Doctrine_Record_UnknownPropertyException(sprintf('Unknown record property
       / related component "%s" on "%s"', $name, get_class($record)));
    }
}

アップデート:

これはまだ実際には解決されていないので、誰かが問題を診断できるかどうかを確認するために、少し開いたままにしておきたいと思います. 私がそれを回避した方法は、スキーマを変更career_titleすることでした。titleモデルとフォームを再構築したところ、すべて正常に動作しました。なぜこれが起こっているのかについてのさらなる指示は、原因にとって有益です.

4

0 に答える 0