powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / zen+mvc+web
17 сообщений из 17, страница 1 из 1
zen+mvc+web
    #38061047
krjakva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем привет! изучаю каше совсем недавно, столкнулась с такой проблемой:
есть сущность RESTRAUNT:Class Rest.RESTRAUNT Extends (%Persistent, %Populate)
{

Property RestInfo As Rest.RestInfo [ Required ];

Relationship Cards As Rest.CARD [ Cardinality = children, Inverse = Restraunt ];

}

Class Rest.RestInfo Extends (%SerialObject, %Populate, %ZEN.DataModel.Adaptor)
{

Property OfficialName As %String(MAXLEN = 100) [ Required ];

Property Phone As %String(MAXLEN = 20);

Property Address As %String(MAXLEN = 100);

}
есть класс RestrauntModel:Class Rest.RestrauntModel Extends %ZEN.DataModel.ObjectDataModel
{

//RestInfo

Property OfficialName As %String [ Required ];

Property Phone As %String;

Property Address As %String;

Method %OnOpenSource(pID As %String) As %RegisteredObject
{
    Set pStatus = $$$OK
    Quit ##class(Rest.RESTRAUNT).%OpenId(pID)
}

Method %OnSaveSource(pSource As Rest.RESTRAUNT) As %Status
{
  Set tSC = pSource.%Save()
  Set ..%id = pSource.%Id()
  Quit tSC
}

Method %OnLoadModel(pSource As Rest.RESTRAUNT) As %Status
{

    Set ..OfficialName = pSource.RestInfo.OfficialName
    Set ..Phone = pSource.RestInfo.Phone
    Set ..Address = pSource.RestInfo.Address
    Quit $$$OK
}

Method %OnRestModel(pSource As Rest.RESTRAUNT) As %Status
{
    
    Set pSource.RestInfo.OfficialName= ..OfficialName
    Set pSource.RestInfo.Phone =..Phone
    Set pSource.RestInfo.Address =..Address
    Quit pSource.%Save()
}

ClassMethod %OnDeleteSource(pID As %String) As %Status
{
  Quit ##class(Rest.RESTRAUNT).%DeleteId(pID)
}

Method %OnNewSource(Output pSC As %Status = {$$$OK}) As %RegisteredObject
{
  Quit ##class(Rest.RESTRAUNT).%New()
}

}

и есть zen-приложение для добавления записей и отображения таблицы:/// Created using the page template: Default
Class MyApp.RestShow Extends %ZEN.Component.page
{

/// Имя приложения, которому принадлежит эта страница.
Parameter APPLICATION;

/// Отображаемое имя для нового приложения.
Parameter PAGENAME;

/// Домен, используемый для локализации.
Parameter DOMAIN;

/// Этот блок Style содержит определение CSS стиля страницы.
XData Style
{
<style type="text/css">
</style>
}

/// Этот XML блок описывает содержимое этой страницы.
XData Contents [ XMLNamespace = " http://www.intersystems.com/zen"  ]
{
<page xmlns=" http://www.intersystems.com/zen"  title="">
<dataController id="patientData"
                modelClass="Rest.RestrauntModel"
                modelId="1" />
<form controllerId="patientData" id="MyForm" >
  <text label="ID:"
        onblur="zenPage.loadRecord(zenThis.getValue())"
        dataBinding="%id"/>
  <text label="Названиe" dataBinding="OfficialName" />
  <text label="Телефон" dataBinding="Phone" />
  <text label="Адрес" dataBinding="Address" />
</form>
 <hgroup>
    <button caption="Сохранить" onclick="zenPage.saveRecord();" />
  <button caption="Новая запись" onclick="zenPage.newRecord();"  />
</hgroup> 
<tablePane id="patientDataT" tableName="Rest.RestrauntModel"/>              
</page>
}

ClientMethod newRecord() [ Language = javascript ]
{
  zenPage.getComponentById('patientData').createNewObject();
}

/// Сохраняем объект, обновляем табличку
ClientMethod saveRecord() [ Language = javascript ]
{
  zenPage.getComponentById('patientData').save();
  zenPage.getComponentById('patientDataT').executeQuery();
}

/// Загружаем объект в контроллер (например, при выборе строки таблицы)
ClientMethod loadRecord(id) [ Language = javascript ]
{
  if (id!="") {
    zenPage.getComponentById('patientData').setModelId(id);
  }
}

}

когда пытаюсь скомпилировать и открыть страницу в браузере вылетает ошибка:
Код: plaintext
таблица Rest.RestrauntModel не найдена.

скажите, пожалуйста, что же надо вставить в tableName в строке <tablePane id="patientDataT" tableName="Rest.RestrauntModel"/>,
чтобы на страничке в браузере отобразились записи?
...
Рейтинг: 0 / 0
zen+mvc+web
    #38061556
Александр Коблов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krjakvaкогда пытаюсь скомпилировать и открыть страницу в браузере вылетает ошибка:
таблица Rest.RestrauntModel не найдена.


А у вас есть такая таблица? Вы ж нам только про Rest.RESTRAUNT и Rest.RestInfo рассказали.
В документации разные пример есть.
...
Рейтинг: 0 / 0
zen+mvc+web
    #38063511
krjakva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
конкретно такой таблицы нет, но есть же контроллер (он же RestrauntModel). я неправильно понимаю, что контроллер должен реагировать на обращение к себе из zen и вытаскивать записи из таблицы Restraunt?
спасибо за документацию, я её уже читала, но не нашла там примера для mvc шаблона, который используется у меня.
...
Рейтинг: 0 / 0
zen+mvc+web
    #38063709
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krjakvaконкретно такой таблицы нет, но есть же контроллер (он же RestrauntModel). я неправильно понимаю, что контроллер должен реагировать на обращение к себе из zen и вытаскивать записи из таблицы Restraunt?
спасибо за документацию, я её уже читала, но не нашла там примера для mvc шаблона, который используется у меня.
Контроллер помогает в заполнении полей форм, а не таблиц(!) - иначе бы потребовалось столько контроллеров, сколько строк в таблице.
В таблице нужно использовать запрос к данным (а не к контроллеру) - tableName="Rest.Restraunt"
И еще - чем оправдываете использование отдельного класса модели? Не проще ли как и во втором случае просто унаследовать класс данных от %ZEN.DataModel.Adaptor?
...
Рейтинг: 0 / 0
zen+mvc+web
    #38063816
krjakva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kolesov,

проблема в том, что когда я подставляю туда tableName="Rest.Restraunt", у меня не вставляются в неё никакие записи с формы после нажатия на эту кнопку: <button caption="Сохранить" onclick="zenPage.saveRecord();" />
отдельный класс оправдываю тем, что так сказано в задании, которое выдали в институте.
посоветуйте, пожалуйста, что я не учла, чтобы и таблица отображалась, и записи сохранялись
...
Рейтинг: 0 / 0
zen+mvc+web
    #38064799
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krjakva ,

1. коль скоро класс Rest.CARD Вы опустили и в модели он не используется, уберите его вовсе из Rest.RESTRAUNT ;

2. тип свойств в модели должен совпадать с типами в исходном классе иначе рискуете потерять часть данных или получить ошибку переполнения:
%String; = %String(MAXLEN = 50); => %String(MAXLEN = 100); ≠ %String;

3. %OnRestModel исправьте на %OnStoreModel ;

4. <tablePane id="patientDataT" tableName="Rest.RestrauntModel"/>
исправьте на
<tablePane id="patientDataT" tableName="Rest.RESTRAUNT"/>

PS: Методическое пособие по ZEN и Prototype 6 (стр. 70)
...
Рейтинг: 0 / 0
zen+mvc+web
    #38065413
krjakva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit krjakva ,

1. коль скоро класс Rest.CARD Вы опустили и в модели он не используется, уберите его вовсе из Rest.RESTRAUNT ;

2. тип свойств в модели должен совпадать с типами в исходном классе иначе рискуете потерять часть данных или получить ошибку переполнения:
%String; = %String(MAXLEN = 50); => %String(MAXLEN = 100); ≠ %String;

3. %OnRestModel исправьте на %OnStoreModel ;

4. <tablePane id="patientDataT" tableName="Rest.RestrauntModel"/>
исправьте на
<tablePane id="patientDataT" tableName="Rest.RESTRAUNT"/>

PS: Методическое пособие по ZEN и Prototype 6 (стр. 70)

исправила всё, как Вы сказали, - не работает (приложила скриншот).
и методическое пособие, к сожалению, отсутствует на сервере. перезалейте его, пожалуйста, куда-нибудь ещё
может быть, не хватает какого-нибудь метода? я всё делала по примерам из интернета
...
Рейтинг: 0 / 0
zen+mvc+web
    #38066447
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krjakvaи методическое пособие, к сожалению, отсутствует на сервере. перезалейте его, пожалуйста, куда-нибудь ещёТогда посмотрите Аудио-курс с упражнениями (есть pdf)
krjakvaисправила всё, как Вы сказали, - не работаетПопробуйте мой проект.
...
Рейтинг: 0 / 0
zen+mvc+web
    #38066879
krjakva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servitkrjakvaи методическое пособие, к сожалению, отсутствует на сервере. перезалейте его, пожалуйста, куда-нибудь ещёТогда посмотрите Аудио-курс с упражнениями (есть pdf)
krjakvaисправила всё, как Вы сказали, - не работаетПопробуйте мой проект.

я уже смотрела эти презентации - там нет нужного(
если можно, всё-таки загрузите, пожалуйста, то методическое пособие ещё раз. надеюсь, оно будет полезным
и спасибо огромное за советы и помощь

попробовала Ваш проект, получилось создать две записи, дальше вылетает ошибка
ещё объясните мне, пожалуйста, как сделать так, чтобы таблица отображалась в том виде, как на приложенном скриншоте внизу
пока что отображается только поле id, а когда пытаюсь создать такую конструкцию:
<tablePane id="table"
tableName="Rest.RESTRAUNT">
<column colName="ID" hidden="true"/>
<column colName="OfficialName"/>
</tablePane>
вылетает ошибка -
ERROR #5540: SQLCODE: -29 Message: Field 'OFFICIALNAME' not found in the applicable tables^ SELECT ID , OfficialName FROM
SOURCE ELEMENT: %ZEN.Component.tablePane (patientDataT)
несмотря на то, что Relationship с классом Rest.RestInfo прописан
...
Рейтинг: 0 / 0
zen+mvc+web
    #38066933
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krjakvaя уже смотрела эти презентации - там нет нужного(Презентации или PDF-документ на странице 19?
krjakvaесли можно, всё-таки загрузите, пожалуйста, то методическое пособие ещё раз. надеюсь, оно будет полезнымДокумент не мой. Возможно, его удалили по требованию авторов.
krjakvaпопробовала Ваш проект, получилось создать две записи, дальше вылетает ошибкаНе густо.
krjakvaещё объясните мне, пожалуйста, как сделать так, чтобы таблица отображалась в том виде, как на приложенном скриншоте внизуЗаготовка<tablePane
id="patientDataT"
tableName="Rest.RESTRAUNT"
caption="Рестораны"
showRowNumbers="true"
showRowSelector="true"
>
<column colName="ID" hidden="true"/>
<column colName="RestInfo_OfficialName" header="Официальное название"/>
<column colName="RestInfo_Phone" header="Телефон"/>
<column colName="RestInfo_Address" header="Адрес"/>
<column seed="edit" OnDrawCell="DrawCell"/>
<column seed="cards" OnDrawCell="DrawCell"/>
</tablePane>

Method DrawCell(
  pTable As %ZEN.Component.tablePane,
  pName As %String,
  pSeed As %String) As %Status
{
  if pSeed="edit" {
    &html<<a href="#" onclick="zenAlert(#(..QuoteJS(%query("RestInfo_Address")))#);">Редакт.</a>>
  }elseif pSeed="cards" {
    &html<<a href="#" onclick="zenAlert('bla-bla-bla');">Кредитки</a>>
  }
  Quit $$$OK
}
PS: можно узнать ВУЗ?
...
Рейтинг: 0 / 0
zen+mvc+web
    #38066985
krjakva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit,
pdf-документ. собственно, с него я и начала делать курсовую. но потом что-то не заработало, и я взяла за основу одну из тем с этого форума.
жаль, что удалили пособие. беглое гугление не нашло его
ещё скажите, пожалуйста, почему/из-за чего может вылетать такая ошибка? проверила свои методы по pdf-документу - всё то же самое.
и спасибо огромное за пример с видом таблицы - очень долго искала в интернете аналогичный, но не нашла
а вуз - мифи. нынче нияу мифи.
...
Рейтинг: 0 / 0
zen+mvc+web
    #38066989
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krjakvaещё скажите, пожалуйста, почему/из-за чего может вылетать такая ошибка?Опубликуйте здесь код проекта в ZIP.
...
Рейтинг: 0 / 0
zen+mvc+web
    #38066992
krjakva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servitОпубликуйте здесь код проекта в ZIP.
прикладываю xml
...
Рейтинг: 0 / 0
zen+mvc+web
    #38067627
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krjakva ,

Ваш код у меня (2013.1.FT2) работает без проблем: создал пять записей.

Попробуйте удалить все глобалы ^Rest.* и создать записи заново: возможно, что остался мусор с предыдущих Ваших экспериментов.
...
Рейтинг: 0 / 0
zen+mvc+web
    #38068659
krjakva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем откликнувшимся огромное человеческое спасибо,
вопрос закрыт.
...
Рейтинг: 0 / 0
zen+mvc+web
    #38306733
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krjakvaи методическое пособие, к сожалению, отсутствует на сервере. перезалейте его, пожалуйста, куда-нибудь ещё Методическое пособие по ZEN и Prototype 6
...
Рейтинг: 0 / 0
zen+mvc+web
    #38306944
Шваров Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitkrjakvaи методическое пособие, к сожалению, отсутствует на сервере. перезалейте его, пожалуйста, куда-нибудь ещё Методическое пособие по ZEN и Prototype 6

По мотивам этого прекрасного пособия создан электронный курс Zen .
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / zen+mvc+web
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]