0

zendframework プロジェクトで jqgrid を使用しようとしています。utilizadores というテーブルから値を取得しようとしています。firebug で OK メッセージを受け取りましたが、回答は次のとおりです。

<br />
<b>Warning</b>:  Creating default object from empty value in <b>C:\xampp\htdocs\Eulen2\application\controllers\UtilizadoresController.php</b> on line <b>51</b><br />
{"page":"1","total":1,"records":1,"rows":[{"id":"1","cell":["hugo silva","admin","Admin"]}]}

51行目は次のとおりです。

$responce->page = $page > $total_pages ? $total_pages : $page;

ここに私のコードがあります:

utilizadores コントローラ アクション リスト

 public function listAction()
    {
        // action body
        if($this->_request->isXmlHttpRequest())
        {
            $this->_helper->layout()->disableLayout();
            $this->_helper->viewRenderer->setNoRender(true);
            Zend_Paginator::setDefaultScrollingStyle('Sliding');
            $page = $this->_getParam('page', 1);
            $limit = $this->_getParam('rows', 0);
            $sidx = $this->_getParam('sidx', 1);
            $sord = $this->_getParam('sord', 0);
            $totalrows = $this->_getParam('totalrows', false);
            if($totalrows)
                $limit = $totalrows;
            $employeesModel = new Application_Model_Account();
            $filters = !empty($_REQUEST['filters']) ? (array) json_decode($_REQUEST['filters']) : array();
            //$jqGridModel = new Application_Model_JqGrid();
            $employeesModelSelect = ($_GET['_search'] == 'true') ? $jqGridModel->where($employeesModel, $filters['rules']) : $employeesModel->select();
            $employeesModelSelect->order("$sidx $sord");
            $adapter = new Zend_Paginator_Adapter_DbTableSelect($employeesModelSelect);
            $paginator = new Zend_Paginator($adapter);
            $paginator->setCurrentPageNumber($page)->setItemCountPerPage($limit);
            $count = count($employeesModel->fetchAll() );
            $total_pages = $count > 0 ? ceil($count / $limit) : 1;
            $responce->page = $page > $total_pages ? $total_pages : $page;
            $responce->total = $total_pages;
            $responce->records = $count;
            $i = 0;
            foreach($paginator as $item)
            {
                $responce->rows[$i]['id'] = $item['id_utilizador'];
                $responce->rows[$i]['cell'] = array($item['nome'], $item['username'],$item['tipo_utilizador']);
                $i++;
            }
            echo json_encode($responce);
        } else
        {
            $this->_helper->layout()->pageTitle = 'Listagem de utilizadores';
            $this->_helper->layout()->pageDescription = 'Neste seção podes listar todos os utilizadores';
        }
    }

私のlist.phtmlで私はこれを持っています:

<script>
        $(function() {
            $("#toolbar").jqGrid({ 
                caption:"Utilizadores",
                colNames:['Nome', 'Apelido','Cargo'],
                colModel:[
                    {name:'nome',index:'nome'},
                    {name:'username',index:'username'},
                     {name:'tipo_utilizador',index:'tipo_utilizaodr'}
                ],
                datatype:"json",
                height:421, 
                rownumWidth:40,
                pager:'#ptoolbar',
                rowList:[10,20,30],
                rowNum:10,
                sortname:'id_utilizador',
                sortorder:'desc',
                url:'/utilizadores/list/',
                viewrecords:true,
                width:740
            });
            $("#toolbar").jqGrid('navGrid','#ptoolbar',{del:false,add:false,edit:false,search:false});
            $("#toolbar").jqGrid('filterToolbar',{stringResult:true,searchOnEnter:false});
        });
    </script>

そして私のアカウントモデル

class Application_Model_Account extends Zend_Db_Table
{
 protected $_name = 'utilizadores';
}

ログインフォームを取得したため、データベースへの接続は正常に機能しており、テーブル「utilizadores」に存在するフィールドに従ってアクセスできます。

json の代わりに xml を返すようにコードを置き換えようとしましたが、同じことが起こります...

4

1 に答える 1

0

$responce は、使用する前に定義されていなかったため、警告が表示されます。

追加してみる

$responce = new stdClass();

$responce->page ...の直前

于 2013-07-19T15:42:57.450 に答える