Monthly Archives: 12月 2015

[FuelPHP] リレーション先のテーブルも含めて連続してvalidateする

modelにリレーションの設定をしていると、バリデーション時にリレーション元とリレーション先の複数テーブルにバリデーションしなければならないケースがあります。

$val = Model_User::validate('edit');
if ($val->run())
{
    $val2 = Model_Category::validate('edit');
    if ($val2->run())
    {
    }
}

しかし、上記のようにしてしまうと、

Form instance already exists, cannot be recreated. Use instance() instead of forge() to retrieve the existing instance.

と、このようなエラーが出ます。 これはmodel内での Validation::forge(xxxx) のxxxxが同じであるため、すでにインスタンスが存在することによるエラーです。

このエラーが出た場合、単純に

$val = Model_User::validate('edit');
if ($val->run())
{
    $val2 = Model_Category::validate('edit2');
    if ($val2->run())
    {
    }
}

と、

validate内の引数を変えてあげるだけで問題なく実行できます。

p.s.
一年半もブログを更新してなかった…

Posted in FuelPHP| Tagged | [FuelPHP] リレーション先のテーブルも含めて連続してvalidateする はコメントを受け付けていません。