Вывести данные из 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, время: 05:47. |