2013-12-10 3 views
0

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

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

Контроллер

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', 
     ), 
    ); 

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

спасибо и больше сила.

ответ

1

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

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

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

+0

Ну, это исправить. Я сделал то, что вы сказали, и заработал. Спасибо за помощь. – Defyleiti