私はDoctrineとCode Igniterの新機能です。私のテーブルで問題が発生しています。Doctrine列挙型で列挙されていない値を追加することはできませんか?
私は(この時点でテスト用)4種類の文字のみを許可するだろうと思ったモデルを有する
<?php
class Photo extends Doctrine_Record
{
public function setTableDefinition()
{
$this->hasColumn('photo_path', 'string', 255, array('unique' => 'true'));
$this->hasColumn('category', 'enum', null,
array('values' => array('a', 'b', 'c', 'd'))
);
$this->hasColumn('token', 'string', 255);
}
public function setUp()
{
$this->actAs('Timestampable');
}
public function preInsert($event)
{
$this->token = (sha1(rand(11111, 99999)));
}
}
Iは選択ボックスとアップロードフォーム
<?php echo validation_errors('<p class="error">','</p>'); ?>
<div id="upload">
<?php
$categoryOptions= array(
'' => '',
'a' => 'a',
'b' => 'b',
'c' => 'c',
'1' => '1'
);
echo form_open_multipart('admin/addImage');
echo form_upload('userfile');
echo form_dropdown('letter', $categoryOptions);
echo form_submit('upload', 'Upload!');
echo form_close();
?>
</div>
を有するビューを持っています
選択ボックスから「1」を選択した場合、Doctrineはエラーをスローし、そのレコードを挿入しないことを期待しますが、カテゴリに「1」を挿入します。列挙型列が入力を制限するように私がやっていないいくつかのステップがありますか?
ありがとうございます。
私はコードイグナイタプラグインファイルに追加しました。そして、 '1'としてそのフィールドを挿入すると、 'a'という文字列がデータベースに現れます(enum配列の最初の文字だからでしょうか? 'ahjkh'のようなぎこちない文字列を渡すと、 harnable行に 'notnull' => trueを追加したにもかかわらず、prevalidateのような検証フックを使用するには、テーブル定義からenum配列を取得する方法がありますか?その機能とちょうどin_arrayを使用していますか?ありがとうたくさんありがとう – Rapture
ああ、非常に役立つ!ありがとう。私はモデルで正しく持っていたが、何らかの理由でnotnullだけで動作していないようです。私自身のフォーム検証を追加することができました。 – Rapture