我在将数据保存到数据库时遇到问题,因为始终会调用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',
),
);
当我点击提交按钮时输入字段上没有输入时出现错误,没有问题,但即使有输入,错误仍然显示。因此总是被称为捕获。当我删除try和catch时,我可以轻松地将数据保存到数据库,但是没有验证。
谢谢你,更多力量。
答案 0 :(得分:1)
您希望ORM类神奇地知道来自名为$album->Album_Name
的HTTP表单输入的inputAlbum
的值。它不会。
为ORM对象本身的Album_Name
和Artist
属性创建规则。不是可能的输入法。
Controller知道要传递给模型的数据。该模型仅关注其收到的数据。不是它来自哪里。