【问题标题】:catch always get calledcatch 总是被调用
【发布时间】:2013-12-10 09:51:07
【问题描述】:

我在将数据保存到数据库时遇到问题,因为总是调用 catch 异常。尝试总是被忽略。我真的不知道发生了什么。我已经为此工作了几个小时,但我无法让它工作。我正在使用 kohana 3.3 和 kostache。

所以这里是控制器。

控制器

APPATH/classes/controller/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/templates/pages/album/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/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/messages/models/album.php

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

当我点击提交按钮时,输入字段上没有输入时会显示错误,这没有问题,但即使有输入,错误仍然会显示。所以 catch 总是被调用。当我删除 try and catch 时,我可以轻松地将数据保存到数据库中,但没有验证。

谢谢你和更多的力量。

【问题讨论】:

    标签: php kohana kostache


    【解决方案1】:

    您希望 ORM 类神奇地知道 $album-&gt;Album_Name 的值来自名为 inputAlbum 的 HTTP 表单输入。不会的。

    为 ORM 对象本身的 Album_NameArtist 属性创建规则。不是可能的输入法。

    控制器知道将什么数据传递给模型。模型只关心它收到的数据。不是从哪里来的。

    【讨论】:

    • 好吧,修复它。我按照你说的做了,并且成功了。感谢您的帮助。
    猜你喜欢
    • 2017-09-14
    • 2012-02-19
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-23
    相关资源
    最近更新 更多