[英]catch always get called
由于总是调用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 /模板/页面/专辑/列表。小胡子
<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 / classes / model / album / 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 and catch时,我可以轻松地将数据保存到数据库中,但是没有验证。
谢谢您,还有更大的力量。
您希望ORM类神奇地知道$album->Album_Name
的值来自于名为inputAlbum
的HTTP表单输入。 不会的
为ORM对象本身的Album_Name
和Artist
属性创建规则。 没有可能的输入法。
控制器知道要传递给模型的数据。 该模型仅与接收到的数据有关。 不是它来自哪里。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.