Вывести данные из php
Здравствуйте.
Только сегодня познакомился с ExtJs. В версии 4.2.1 нашел необходимый мне пример 'custom-form'. Теперь необходимо передавать в форму свои данные которые находятся в БД. Начал 'смотреть' файл custom-form.js. Ext.Loader.setConfig({enabled: true}); Ext.Loader.setPath('Ext.ux', '../ux'); Ext.require([ 'Ext.data.*', 'Ext.panel.Panel', 'Ext.view.View', 'Ext.layout.container.Fit', 'Ext.toolbar.Paging', 'Ext.ux.form.SearchField', 'Ext.ux.DataTip' ]); Ext.define('Post', { extend: 'Ext.data.Model', idProperty: 'post_id', fields: [ {name: 'postId', mapping: 'post_id'}, {name: 'title', mapping: 'topic_title'}, {name: 'topicId', mapping: 'topic_id'}, {name: 'author', mapping: 'author'}, {name: 'lastPost', mapping: 'post_time', type: 'date', dateFormat: 'timestamp'}, {name: 'excerpt', mapping: 'post_text'} ] }); Ext.onReady(function(){ var forumId = 4; var store = Ext.create('Ext.data.Store', { model: 'Post', proxy: { type: 'jsonp', url: 'http://sencha.com/forum/topics-remote.php', extraParams: { forumId: forumId }, reader: { type: 'json', root: 'topics', totalProperty: 'totalCount' } }, listeners: { beforeload: function(){ var params = store.getProxy().extraParams; if (params.query) { delete params.forumId; } else { params.forumId = forumId; } } } }); store.loadPage(1); var resultTpl = Ext.create('Ext.XTemplate', '<tpl for=".">', '<div class="search-item">', '<h3><span>{lastPost:this.formatDate}<br>by {author}</span>', '<a href="http://sencha.com/forum/showthread.php?t={topicId}&p={postId}" target="_blank">{title}</a></h3>', '<p>{excerpt}</p>', '</div></tpl>', { formatDate: function(value){ return Ext.Date.format(value, 'M j, Y'); } }); var panel = Ext.create('Ext.panel.Panel', { title: 'Forum Search', height: 300, width: 600, renderTo: 'search-panel', id: 'search-results', layout: 'fit', items: { overflowY: 'auto', xtype: 'dataview', tpl: resultTpl, store: store, itemSelector: 'div.search-item', emptyText: '<div class="x-grid-empty">No Matching Threads</div>' }, dockedItems: [{ dock: 'top', xtype: 'toolbar', items: { width: 400, fieldLabel: 'Search', labelWidth: 50, xtype: 'searchfield', store: store } }, { dock: 'bottom', xtype: 'pagingtoolbar', store: store, pageSize: 25, displayInfo: true, displayMsg: 'Topics {0} - {1} of {2}', emptyMsg: 'No topics to display' }] }); }); Есть ли пример исходника файла topics-remote.php, чтобы увидеть как хранятся там данные? Заранее спасибо. |
post_id
topic_title topic_id author post_time timestamp post_text |
Спасибо за ответ, но можно по-подробней?
Хотя бы маленький пример. Заранее спасибо. |
Нужно сформировать похожий JSON, как по ссылке в вашем примере. Это можно посмотреть в браузере.
http://sencha.com/forum/topics-remote.php Из PHP обращаетесь к базе и выбираете из нужные таблиц строки. Собираете их в ассоциативный массив. Затем преобразуете его в строку JSON и возвращаете её через echo. Используете $_GET['forum_id'], mysqli, json_encode. Соответствия полей определены у вас в модели через свойство mapping. Но можно обойтись и без этого, а отправить из PHP те же названия полей, что используются в JavaScript'е. |
Попробовал вывести статические данные типа вот так:
$arr[] = array("topic_title"=>"Status bar error with IFrames", "author"=>"Daz", "post_text"=>"get better"); $json = json_encode($arr); echo $json; Нечего не выводит Из файла topics-remote.php делал json_decode текста, чтобы посмотреть пример ассоциативного массива, но получал null. |
NULL из-за того, что не были заэкранированы одиночные кавычки:
' -> \' var_dump(var_export(json_decode('...', true))); array ( 'totalCount' => '6679', 'topics' => array ( 0 => array ( 'post_id' => '604220', 'topic_title' => 'Status bar error with IFrames', 'topic_id' => '134120', 'author' => 'Daz', 'post_time' => '1305857168', 'post_text' => 'Ext version tested: Ext 3.3.3 Adapter used: ext css used: default ext-all.css Browser versions tested against: FF4 (firebug 1.7.1 installed) ...', 'forum_title' => 'Ext 3.x: Bugs', 'forumid' => '41', 'reply_count' => '0', ), 1 => |
Спасибо за кавычки)
|
echo выводить переменную json?
|
В php файле сделал так
$arr[] = array( "totalCount" => '6679', "topics" => array( array( "post_id" => "604220", "topic_title" => "Status bar error with IFrames", "topic_id" => "134120", "author" => "Daz", "post_time" => "1305857168", "post_text" => "Ext version tested:", "forum_title" => "EXT", "forumid" => "41", "reply_count" => "0" ) ) ); $json = json_encode($arr); echo $json; Нечего не выводит. Если объявить $arr, то в консоли ошибка - SyntaxError: missing ; before statement {"totalCount":"6679","topics":[{"post_id":"604220","topic_title":"Status |
Квадратные скобки после имени переменной не нужны. Количество записей в totalCount должно быть реальным. Обычно этот параметр используется для разбивки результата запроса на страницы.
$arr = array( "totalCount" => '10', "topics" => array( array( "post_id" => "604220", "topic_title" => "Status bar error with IFrames", "topic_id" => "134120", "author" => "Daz", "post_time" => "1305857168", "post_text" => "Ext version tested:", "forum_title" => "EXT", "forumid" => "41", "reply_count" => "0" ) ) ); $json = json_encode($arr); echo $json; |
Часовой пояс GMT +3, время: 13:40. |