Поймать всегда называют

У меня проблемы с сохранением данных в базу данных, так как всегда вызывается исключение catch. старайтесь всегда игнорироваться. Я действительно не знаю, что происходит. Я работаю над этим часами и не могу заставить его работать. Я использую kohana 3.3 и kostache.

Итак, вот контроллер.

контроллер

APPATH/ классы / контроллер / album.php

public function action_create()
    {
                $view = Kostache_Layout::factory();
                $layout = new View_Pages_Album_List();
                $album = ORM::factory('Album_Information');
                $album_name = $this->request->post('inputAlbum');           
                $artist = $this->request->post('inputArtist');  
                $album->Album_Name = $album_name;
                $album->Artist = $artist;

                try
                {
                    $album->save();
                    HTTP::redirect('album');
                }
                catch(ORM_Validation_Exception $e)
                {
                    $layout->errors = $e->errors('models');
                }
            }   

        $this->response->body($view->render($layout));
    }

Шаблоны

APPATH/ шаблоны / страницы / альбом / list.mustache

<h3>Add A New Album</h3>
<form action="album/create" method="post">

<label for="inputAlbum">Album Name:</label>
<input id="inputAlbum" type="text" name="inputAlbum" /><br />
<label for"inputAlbum" class="error">{{#errors}}{{inputAlbum}}{{/errors}}</label>

<label for="inputArtist">Album Artist:</label>
<input id="inputArtist" type="text" name="inputArtist" /><br />
<label for="inputArtist" class="error">{{#errors}}{{inputArtist}}{{/errors}}</label>

<input type="submit" name="submit" value="Add" />
</form>

Типовые правила

APPATH/ классы / модель / альбом /information.php

class Model_Album_Information extends ORM
{
    protected $_primary_key = 'ID';
    protected $_table_name = 'album_information';

    public function rules()
    {
        return array(
                'inputAlbum' => array(
                    array('not_empty'),
                    ),
                'inputArtist' => array(
                    array('not_empty'),
                    ),
        );
    }

Сообщения

APPATH/ сообщения / модель / album.php

return array(
        'inputAlbum' => array(
            'not_empty' =>  ':You must provide Album Name',     
            ),
        'inputArtist' => array(
            'not_empty' => ':You must provide Album Artist',
        ),
    );

Ошибки отображаются, когда нет ввода в поле ввода, когда я нажимаю кнопку подтверждения, с этим нет проблем, но даже при наличии ввода ошибки все еще отображаются. Так что улов всегда называется. Когда я удаляю попытку и ловлю, я могу легко сохранить данные в базу данных, но нет проверки.

Спасибо и больше власти.

1 ответ

Решение

Вы ожидаете, что класс ORM волшебным образом знает значение $album->Album_Name пришел из ввода формы HTTP с именем inputAlbum, Не будет

Создать правила для Album_Name а также Artist свойства самого объекта ORM. Не возможный метод ввода.

Контроллер знает, какие данные передавать моделям. Модель касается только полученных данных. Не откуда это взялось.

Другие вопросы по тегам