Giter VIP home page Giter VIP logo

Comments (40)

ASGAlex avatar ASGAlex commented on May 22, 2024

Это не обязательное требование.
У классов хэлперов есть переменная $module, её можно определить вручную, указав правильное имя модуля. В противном случае ожидается, что модуль будет вида "aloha.adminhelper", да.

В недрах AdminBaseHelper (строка 130 прмерно):

/**
 * @var string
 * Назвние модуля данной модели.
 * При наследовании класса необходимо указать нзвание модуля, в котором он находится.
 * А можно и не указывать, в этому случае он определится автоматически по namespace класса
 * Используется для избежания конфликтов между именами представлений.
 *
 * @api
 */
static public $module = array();

from digitalwand.admin_helper.

Frimko avatar Frimko commented on May 22, 2024

Могу ли я работать с ORM-таблицей через ваш функционал? А не той псевдо-сущностью, что у вас в примере.

from digitalwand.admin_helper.

ASGAlex avatar ASGAlex commented on May 22, 2024

Не понял... Можно конкретизировать:

  • С какой сущностью работать хочется?
  • С какой "из примера" работать не хочется?

from digitalwand.admin_helper.

Frimko avatar Frimko commented on May 22, 2024

Тупанул, Извиняюсь, отличная вещь, еще бы это как библиотеку, чтобы импортировать в свои модули и вообще шик. От route.php правда придется отказаться. Либо ждать когда его включат оффициально.

from digitalwand.admin_helper.

ASGAlex avatar ASGAlex commented on May 22, 2024

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

Проблемы, правда, начнутся, когда захочется обновлений.
В идеале, конечно, модуль просто выкачивать и устанавливать как зависимость. Цивилизованное человечество обычно так и поступает :-)

from digitalwand.admin_helper.

Frimko avatar Frimko commented on May 22, 2024

Я могу выставить платный модуль, используя вашу библиотеку(само собой с копирайтом сюда). з.ы. уж больно влом писать админку по их дрянному мануалу.

from digitalwand.admin_helper.

ASGAlex avatar ASGAlex commented on May 22, 2024

Конечно, решение распространяется по лицензии MIT - можете использовать как угодно, только с сохранением копирайта :-)

from digitalwand.admin_helper.

Frimko avatar Frimko commented on May 22, 2024

Ну лицензия то не написана, вот и спрашиваю.

from digitalwand.admin_helper.

ASGAlex avatar ASGAlex commented on May 22, 2024

Ну почему же не написана?..
https://github.com/DigitalWand/digitalwand.admin_helper/blob/2.x/LICENSE.md

from digitalwand.admin_helper.

Frimko avatar Frimko commented on May 22, 2024

привычка походу, лицензию внизу в описании функционала смотреть...

from digitalwand.admin_helper.

Frimko avatar Frimko commented on May 22, 2024

чего-то я не догоняю... http://joxi.ru/n2Y5XRPijvxL92 ведь все правильно прописано http://joxi.ru/E2pgpWOCBPZ5km http://joxi.ru/l2Z6xnPI8x4072 и как назло первопроходцам везет на шишки

from digitalwand.admin_helper.

ASGAlex avatar ASGAlex commented on May 22, 2024

...а HL-инфоблок-то в битриксе создан?
Насколько я помню, чтобы он его корректно нашел, надо либо не использовать неймспепйсы, либо имя HL-инфоблока должно состоять из полного наименования класса, включая неймспейс. Только без слешей.
Если что - эт не я так придумал, это Битрикс всё...

from digitalwand.admin_helper.

Frimko avatar Frimko commented on May 22, 2024

В этом то и дело. Что HL-блок я не использую. Я всего лишь создал orm-таблицу, и пытаюсь ее использовать. Но если я ее закину в папочку news и пропишу неймспейсы к ней и в ней, то все работает прекрасно.

from digitalwand.admin_helper.

Frimko avatar Frimko commented on May 22, 2024

Либо я чего-то не догоняю

from digitalwand.admin_helper.

ASGAlex avatar ASGAlex commented on May 22, 2024

Если цепляете к кастомной таблице, то посмотрите в сторону примера https://github.com/niksamokhvalov/demo.adminhelper - буквально вчера на его основе выбирал из b_iblock, всё работает нормально, только нужно указать таблицу у класса ЧтоНибудьTable.

from digitalwand.admin_helper.

Frimko avatar Frimko commented on May 22, 2024

Я его и юзаю. Только вынес описание вашей таблицы за папочку news в папку lib. Ну и переписал неймспейсы.
З.ы.походу баг

from digitalwand.admin_helper.

ASGAlex avatar ASGAlex commented on May 22, 2024

Если пока в коде нет ничего секретного, было бы проще мне скинуть кусок получившегося модуля - я бы посмотрел, что не так. А то пока что эффективность - как от лечения зубов по фотографии...

from digitalwand.admin_helper.

Frimko avatar Frimko commented on May 22, 2024

demo.web38.zip
вот

from digitalwand.admin_helper.

Frimko avatar Frimko commented on May 22, 2024

подебажил, узнал что он просто не может найти класс надо было в include.php прописать так
'Bitrix\Demo\Web38\NewsTable' => 'lib/NewsTable.php',
ну и соответствующие пути в других файлах.

from digitalwand.admin_helper.

niksamokhvalov avatar niksamokhvalov commented on May 22, 2024

Это ж Битрикс. У него своё понятие об автозагрузке. Посмотрите внимательно на пример: https://github.com/niksamokhvalov/demo.adminhelper/blob/master/lib/news/news.php.

Что бы работала автозагрузка Битрикса, файлы в модуле должны называться в нижнем регистре. У моделей в названии файла слова table быть не должно.

from digitalwand.admin_helper.

Frimko avatar Frimko commented on May 22, 2024

чекбокс он видит как boolean
new BooleanField('ACTIVE', array( 'required' => true, )),
хотя битрикс это описывает в mysql как string, отсюда и не работоспособность виджета

from digitalwand.admin_helper.

ASGAlex avatar ASGAlex commented on May 22, 2024

У виджета там два режима работы, по-человечески и через string. Можно выбрать подходящий в настройках виджета.

from digitalwand.admin_helper.

Frimko avatar Frimko commented on May 22, 2024

т.е. ты мне предлагаешь переписать константы в самом виджете? мб там есть что-то типа настройки protected static $defaults = array( 'EDIT_IN_LIST' => true ); ?
в самом виджете к сожалению этого нету

from digitalwand.admin_helper.

ASGAlex avatar ASGAlex commented on May 22, 2024

Можно переопределить CheckboxWidget::getCheckboxType(); и вернуть нужный тип чекбокса.

В настройках, внезапно, нет... надо будет добавить.

from digitalwand.admin_helper.

Frimko avatar Frimko commented on May 22, 2024

Мой внутренний перфекционист в истерике забился в комочек...

from digitalwand.admin_helper.

ASGAlex avatar ASGAlex commented on May 22, 2024

Мсье, как же вы тогда связались с битриксом?))))))

from digitalwand.admin_helper.

Frimko avatar Frimko commented on May 22, 2024

"Пути до Битрикса не неисповедимы"

from digitalwand.admin_helper.

Frimko avatar Frimko commented on May 22, 2024

а примера для реализации виджета OrmElementWidget не найдется?

from digitalwand.admin_helper.

ASGAlex avatar ASGAlex commented on May 22, 2024

Только что тут #33 запилил возможность указать тип данных для чекбокса, не прибегая к наследованию, через настройки.

@niksamokhvalov на счет OrmElementWidget - отвечать тебе.

from digitalwand.admin_helper.

Frimko avatar Frimko commented on May 22, 2024

ух, как я понял представления списка(то окошечко, которое всплывает при редактировании значения) у вас нету для виджета OrmElementWidget.
'##название нашего поля, у которого есть связь##' => array( 'TITLE' => 'Пользователь', 'WIDGET' => new OrmElementWidget(), 'HELPER'=>'\Test\Web38\Comments\AdminInterface\HelperForUser', 'TITLE_FIELD_NAME' => 'LOGIN', ),
ну и конечно же надо описать нашего наследника
namespace Test\Web38\Comments\AdminInterface; use \DigitalWand\AdminHelper\Helper\AdminBaseHelper; abstract class HelperForUser extends AdminBaseHelper { static protected $model = 'Bitrix\Test\Web38\SmilesUsersCommentTable'; static protected $interfaceClass = array( 'Test\Web38\Comments\AdminInterfaceUsers\UsersInterface' ); }
и не забываем объявить его в модуле
Loader::registerAutoLoadClasses($moduleName, array( 'Bitrix\Test\Web38\SmilesCommentTable' => 'lib/SmilesCommentTable.php', 'Bitrix\Test\Web38\SmilesUsersAvatarTable' => 'lib/SmilesUsersAvatarTable.php', 'Test\Web38\Comments\AdminInterface\HelperForUser' => 'lib/comments/admininterface/HelperForUser.php', ));

from digitalwand.admin_helper.

Frimko avatar Frimko commented on May 22, 2024

В EntityManager.php есть 1 небольшой недочет. При нажатии вот на эту кнопочку http://joxi.ru/52aYBNPFGpEgp2 EntityManager.php:247 $this->helper->getPk() получает массив, хотя там должно быть число
з.ы. реквесты писать пока не стану, ибо не до конца разобрался в вашем творчестве.
з.ы.2 только творец знает, что лучше для его детища

from digitalwand.admin_helper.

Frimko avatar Frimko commented on May 22, 2024

route.php:112
elseif (is_subclass_of($helper, 'DigitalWand\AdminHelper\Helper\AdminBaseHelper')) { $adminHelper = new $helper($fields, $tabs); }
Инстанс абстрактного класса?! втф

from digitalwand.admin_helper.

ASGAlex avatar ASGAlex commented on May 22, 2024

http://php.net/manual/ru/function.is-subclass-of.php

is_subclass_of — Проверяет, содержит ли объект в своем дереве предков указанный класс

Не вижу криминала. Инстанс наследника абстрактного класса.

from digitalwand.admin_helper.

Frimko avatar Frimko commented on May 22, 2024

с ответственностью заявляю OrmElementWidget тот еще шлак, без хоть какой то документации или дампа ментаскопирования мозгов разработчика этого чуда

from digitalwand.admin_helper.

Frimko avatar Frimko commented on May 22, 2024

Не вижу криминала. Инстанс наследника абстрактного класса.

да, я просто наследовал его таким же абстрактным классом.

from digitalwand.admin_helper.

niksamokhvalov avatar niksamokhvalov commented on May 22, 2024

Ничоси, какой дерзкий : )

@Frimko ты спрашивал про OrmElementWidget. Отвечаю: https://github.com/DigitalWand/digitalwand.admin_helper/blob/2.x/lib/widget/OrmElementWidget.php#L11.

Виджет заводится с минимальными параметрами:

  • WIDGET
  • HELPER (подразумевается, что указан хелпер работающей админки)

from digitalwand.admin_helper.

Frimko avatar Frimko commented on May 22, 2024

@niksamokhvalov а плагиатить тп Битрикса не хорошо. Тут становится куда проще накатать свое што то, чем пытаться прикрутить этот виджет.

from digitalwand.admin_helper.

niksamokhvalov avatar niksamokhvalov commented on May 22, 2024

Не путай платную ТП Битрикса, за которую платят деньги, и опен-сорс, который тебе никто не навязывает и не просит использовать. Это принципиально разные концепции. И есть два пути: 1) поливать грязью труды, которыми безвозмездно поделилось сообщество, жаловаться на качество решения (совершая, при этом, детские ошибки по автолоаду классов) или 2) ясно описать проблему, с пруфами и линками, и предложить решение. Мы всегда рады конструктивной критике, issue-сам и пул-реквестам. Выбор за тобой.

abstract class HelperForUser extends AdminBaseHelper
да, я просто наследовал его таким же абстрактным классом.

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

(подразумевается, что указан хелпер работающей админки)

Абстрактный HelperForUser не может являться работающей админкой.

from digitalwand.admin_helper.

Frimko avatar Frimko commented on May 22, 2024

@niksamokhvalov Да, согласен ошибки детские. Уже понял свою оплошность, достаточно подключить AdminListHelper и закинуть к юрл popup=Y. вот тогда все и заработает.
з.ы. но цитировать слова из мануала, это выбесит любого. Да и мануал водянистый(считай понятен только его создателю).

from digitalwand.admin_helper.

Frimko avatar Frimko commented on May 22, 2024

эх, оформления для эрмитажа не хватает...

from digitalwand.admin_helper.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.