0

controller=product.php、model=category.php、およびカスタム エラー メッセージ ファイル category.php があります。空のフォームを送信すると、ルール「not_empty」のエラー メッセージが表示されますが、ルール「unique_categoryname」のエラー メッセージは表示されません

助けてください!

class Controller_Product extends Controller_Application
{
    public function action_addcategory()
    {
        $errors='';
        $cat = new Model_Category();

        $validation=Validation::factory($this->request->post())
        ->rule('cat_name',array($cat,'unique_categoryname'));

        if ($validation->check())
        {

            if (HTTP_Request::POST == $this->request->method())
            {
                try
                {

                    $cat_name=$_POST['cat_name'];
                    $cat_description=$_POST['cat_description'];


                    if (isset($_FILES['cat_image']))
                    {
                        $filename = $cat->upload_photo($_FILES['cat_image']);
                    }
                    $cat->InsertCategory($cat_name,$cat_description,$filename);
                    Request::current()->redirect('product/listcategory');
                }


                catch (ORM_Validation_Exception $ex)
                {
                    $errors = $ex->errors('models');
                }
            }
        }

        $view = new View('product/addcategory');
        $view->set("categories",$cat);
        $view->set('errors',$errors);
        $this->template->content=$view;

    }

}

class Model_Category extends ORM
{
public function rules()
    {
        return array(
                'cat_name' => array(
                        array('not_empty'),
                        array('min_length', array(':value', 4)),
                        array('max_length', array(':value', 32)),

                ),


                'cat_description' => array(
                        array('not_empty'),
                        array('min_length', array(':value', 10)),
                ),
        );
    }

}

//Custom error messages page : messages/models/category.php

return array(
        'cat_name' => array(
                'not_empty' => 'You must provide a category name.',
                'min_length' => 'The category name must be at least :param2 characters long.',
                'max_length' => 'The category name must be less than :param2 characters long.',
                'unique_categoryname'=> 'Category Name already exists, please change',

        ),
        'cat_description' => array(
                'not_empty' => 'You must provide category description .',
                'min_length' => 'The category description must be at least :param2 characters long.',
        ),
);
4

1 に答える 1

1

$validationを ORM の save/update メソッドに渡す必要があります。
が保存用のラッパーであると仮定するInsertCategoryと、そこに渡す必要があります。

$cat->InsertCategory($cat_name, $cat_description, $filename, $validation);

次にInsertCategoryメソッドで:

public function InsertCategory(....)
{
   // .....
   $this->save($validation);
}

Kohana 3.2 にはバグがあり、外部検証メッセージが_external.phpファイルに送られることに注意してください。詳細については、http: //kohanaframework.org/3.2/guide/orm/validation#external-validationをご覧ください。

于 2012-10-16T10:51:57.567 に答える