フォームの読み込み時に次のエラーが発生します。
「フリップブック」の不明なレコード プロパティ/関連コンポーネント「タイトル」
事は...私は「タイトル」がどこから来ているのか分かりません。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
モデルとフォームを再構築したところ、すべて正常に動作しました。なぜこれが起こっているのかについてのさらなる指示は、原因にとって有益です.