CRUDとhasOne()に問題があり、「追加」フォームで$display_fieldが無視されることがわかりました。参照されるモデルに「名前」フィールドがある場合、CRUDの「追加」フォームのドロップダウンメニューに正しく入力されます。ただし、hasOne()モデルが$ display_fieldパラメーターを使用する場合、Addフォームで指定されたフィールドが表示されると思いますが、そうではありません。$ displayで指定されたフィールドではなく、参照されたモデルの「name」フィールドまたは「id」のみが表示されます。ただし、エントリが追加された後、正しい$display_fieldを使用してエントリが表示されます。したがって、問題は追加操作のどこかにあります。
例えば:
著者
class Model_Author extends Model_Table {
public $table='author';
function init(){
parent::init();
$this->addField('long_name');
$this->addField('DOB');
}
}
本
class Model_Book extends Model_Table {
public $table='book';
function init(){
parent::init();
$this->addField('title');
$this->hasOne('Author', 'author_id', 'long_name');
}
}
CRUDページ。
class page_manager extends Page {
function init() {
parent::init();
$tabs=$this->add('Tabs');
$crud=$tabs->addTab('Book')->add('CRUD');
}
}
[追加]ボタンを選択すると、[作成者]フィールドに作成者テーブルの作成者のID番号が表示されます。ただし、Bookエントリを追加した後、正しいフィールド(つまり、long_name)を使用して既存のエントリを表示します。
乾杯